链表反转

链表反转

第一次写博客,大家可以积极指出我的不足。
首先,链表反转是我在力扣做的第一道链表题。
答案如图

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;(这里就发生了转向)
然后以此类推;

总结:这里的last是已经转向的链表;cur是要转向的一个结点;而nxt则是储存cur之后的链表防止cur->next指向last时发生后面结点丢失;

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YZzzz...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值