题目链接:反转链表
题目大意:给你一个链表,你得返回这个链表的反转值。
题目图片:
题目分析:
这道题给了我们一个链表,让我们把这个链表反转过来。
我们先看看原链表:
1->2->3->4->5
是这样对吧?但其实不全是这样
愿链表省略了一部分,就是“5指向哪里呢?”
考虑到这个问题,我们就该重新画一下链表了
1->2->3->4->5->null
最后就是这个状态
那么我们反转之后是什么样子的呢?
5->4->3->2->1->null
这样对吧?
好,题目分析完了,我们来讲讲实现:
这道题的写法很像用到了三个指针:
cur :“指向当前节点”
pre:“指向cur的前一个节点”
next:“指向cur的下一个节点”
每次都用到了这个操作
let next = cur.next; cur.next = pre; pre = cur; cur = next;
也就是每次都把当前指针指向前一个位置,然后再把当先指针移动到下一个位置,同时把前一个指针移到当前位置
好了,思路讲完了。
来看看代码实现:
var reverseList = function(head) {
// let dummy = new ListNode();
// dummy.next = head;
// dummy = null;
let pre = null;
let cur = head;
while(cur){
let next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
};
还有视频嗷~
视频联合制作@Li_Star
视频链接:反转链表(Python版本)