请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答

1回答

liuyubobobo 2019-03-28 11:00:00

我先明确一下你的问题。你的问题是不是:以下两句话,具体指针的变动是怎样的?

L->next = NULL;
p->next = L->next;


如果不是,能否再具体描述一下?


==========


我看了一遍,这个代码整体是有Bug的,是不对的。


关于链表反转这个问题,我全是Leetcode的206号问题。

英文版传送门:https://leetcode.com/problems/reverse-linked-list/

中文版传送门:https://leetcode-cn.com/problems/reverse-linked-list/


对于你截图的这个思路,建议参考我的代码,看看是否能理解:传送门:https://github.com/liuyubobobo/Play-Leetcode/blob/master/0206-Reverse-Linked-List/cpp-0206/main.cpp


核心代码(C++):

class Solution {
public:
    ListNode* reverseList(ListNode* L) {
        ListNode* p, *r;
        p = L->next;
        L->next = NULL;
        while(p != NULL){
            r = p->next;
            p->next = L->next;
            L->next = p;
            p = r;
        }
        return L->next;
    }
};

其中,cur是当前的节点,pre是当前节点的前一个节点,next是当前节点的下一个节点。循环里做的事情,是不断地把cur的next指向pre,同时cur向前移动(相应的pre也要向前移动)


看看能否理解?是否还有问题?


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 大神带D #1
    L-next都指向null了,p-next指向L->next不是指向null吗?在代码里p-next为什么会指向L的下一个节点?
    回复 有任何疑惑可以回复我~ 2019-03-28 14:44:46
  • liuyubobobo 回复 提问者 大神带D #2
    嗯,我看了一遍截图书上的代码,这本书上的代码确实是不对的。我已经在原答案上进行了补充,建议参考我的代码,看看你能否理解?继续加油!:)
    回复 有任何疑惑可以回复我~ 2019-03-28 15:26:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信