递归实现:
实现逻辑是两个两个进行比较
-
找到最后一个节点
-
让newHead=最后一个节点
-
将最后一个节点的next指向老的head
-
将老的next置为null
//递归反转
reverseList() {
//1 2
let head = this.head;
function reverse(head) {
//终止条件
if (head == null || head.next === null) return head;
const newHead = reverse(head.next); //可以找到链表的最终节点
head.next.next = head;
head.next = null;
return newHead;
}
return reverse(head);
}
while实现反转:
reverseList() {
let head = this.head;
if (head == null || head.next == null) return head;
let newHead = null;
while (head) {
const temp = head.next; //保存第2个节点
head.next = newHead; //将1指向null
newHead = head; //将新的链表头指向1
head = temp; //让老的头指向2
}
return newHead;
}