采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
单链表的逆置,头插法
我先明确一下你的问题。你的问题是不是:以下两句话,具体指针的变动是怎样的?
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也要向前移动)
看看能否理解?是否还有问题?
继续加油!:)
L-next都指向null了,p-next指向L->next不是指向null吗?在代码里p-next为什么会指向L的下一个节点?
嗯,我看了一遍截图书上的代码,这本书上的代码确实是不对的。我已经在原答案上进行了补充,建议参考我的代码,看看你能否理解?继续加油!:)
登录后可查看更多问答,登录/注册
课程配套大量BAT面试真题,高频算法题解析,强化训练
1.1k 13
1.1k 12
653 11
1.5k 10
1.2k 10