这里是实现单链表的代码:
class LinkedList {
constructor(value) {
this.head = {
value: value,
next: null,
};
this.tail = this.head;
this.length = 1;
}
append(value) {
const newNode = {
value: value,
next: null,
};
this.tail.next = newNode;
this.tail = newNode;
this.length++;
return this;
}
prepend(value) {
const newNode = {
value: value,
next: null,
};
newNode.next = this.head;
this.head = newNode;
this.length++;
return this;
}
reverse() {
if (!this.head.next) {
return this.head;
}
let first = this.head;
this.tail = this.head;
let second = first.next;
while (second) {
const temp = second.next; //third
second.next = first;
first = second;
second = temp;
}
this.head.next = null;
this.head = first;
return this.printList();
}
}
我需要有人帮助我理解这个
reverse()
功能,我尝试了很多次来理解它,我也尝试过使用ChatGPT哈哈。
reverse()
函数运行时间为O(n)。
1-->2--->3--->4
第一个= 1-->
第二个 = 2-->3-->
一会儿 1°) 温度 = 3-->4
第二个.下一个 = 1-->2-->
第一个 = 2-->1-->
第二= 3-->
2°) 温度=4
第二个.next=2-->1-->
第一个= 3-->2-->1-->
第二 = 4 3度) 温度=空
第二个.下一个 = 3-->2-->1-->
第一个 = 4-->3-->
第二个=空
4°)外出
下一个 1 = 空
头 = 4-->3-->2-->1