JavaScript实现LeetCode第206题:反转链表
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL使用迭代
在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引用。
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
let prevNode = null; // 前指针节点
//每次循环,都将当前节点指向它前面的节点,然后当前节点和前节点后移
while(head != null) {
let tempNode = head.next; //临时节点,暂存当前节点的下一节点,用于后移
head.next = prevNode; //将当前节点指向它前面的节点
prevNode = head; //前指针后移
head = tempNode; //当前指针后移
}
return prevNode;
};官方题解[1]
[1]官方题解: https://leetcode-cn.com/problems/reverse-linked-list/solution/fan-zhuan-lian-biao-by-leetcode/