链表反转
第一次写博客,大家可以积极指出我的不足。
首先,链表反转是我在力扣做的第一道链表题。
答案如图
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* last=NULL;
ListNode* cur=head;
ListNode* nxt=cur;
while(cur){
nxt=nxt->next;
cur->next=last;
last=cur;
cur=nxt;
}
return last;
}
};
这个其实对新人来说有点吃力。(我这个纯属讲给新人看的,大佬大可不必)。
我会一行一行给大家解释。
刚开始初始化:默认N为next;
第一次循环
nxt=nxt->next;就是把nxt指向2,目的是为了储存2以及之后的节点;
cur->next=last;就是把cur->next指向Null(刚开始last初始化为Null);注意:
cur->next之前是指向2,但不等价于2节点;cur自身是一个独立与链表外的节点;
last=cur;这时又将1节点赋给了last;
cur=next就是将2节点赋给了cur;
第二次循环:
第一句是 nxt指向3节点;
第二句为将cur当前为第二节点的next指向1;(这里就发生了转向)
然后以此类推;