老师,还是那个问题
来源:8-8 回溯法是经典人工智能的基础 N Queens
大神带D
2019-03-28
单链表的逆置,头插法
写回答
1回答
-
我先明确一下你的问题。你的问题是不是:以下两句话,具体指针的变动是怎样的?
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也要向前移动)
看看能否理解?是否还有问题?
继续加油!:)
022019-03-28
相似问题