题目来自牛客网算法篇BM1 反转链表
思路:
原本是1->2->3->NULL
我们希望 变成:3->2->1->NULL
不妨设一个pre->NULL
进行一次又一次的循环,变成
pre->NULL
pre->1->NULL
pre->2->1->NULL
......
也就是说,我们进行的操作为:
1.断开链表的最左端,使其指向pre->next
2.再让pre->链表最左端
由此,链表最左端的元素就进入到了pre所链接的表中
3.头指针的滑动(说明我们要事先搞一个cur=heal:即cur指向头节点)
1.和2.需要两个节点即pre和cur即可,但是为了cur的滑动,再用一个节点nex记录
下一个节点的位置,方便后续指向
代码实现
struct ListNode* pre = NULL, * cur = pHead, * nex = NULL;
while (cur)
{
nex = cur->next;
cur->next = pre;
pre = cur;
cur = nex;
}
return pre;
}