码迷,mamicode.com
首页 > 其他好文 > 详细

链表翻转

时间:2020-01-06 22:46:34      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:ali   无法   问题   img   总结   现在   next   应该   ima   

翻转链表(LeetCode206题)

技术图片

翻转成

技术图片

我们思考,当

技术图片

到底该怎样去思考,思考问题的重心在哪里?

先说结论:思考问题的重心是当前如何处理当前节点?

假设现在当前节点是头结点2,那么当发生翻转到底发生了什么?

如果我们要将节点2指向节点1,但是之前是指向节点3的,为了下次能够访问到节点3,我们应该用一个指针保存节点2的下一个节点。

即首先应该有:

Next = current->next;

这样我们将current节点,也就是节点2的下一个节点保存了下来。这样我们就可以放心的将节点2指向节点2之前的节点了。但是需要说明的是:我们无法通过指针的方式来获取当前节点的上一个节点,因此,我们需要实现保存当前节点的上一个节点。此时有

Current->next = pre;

这样,我们完成了当前节点指针的翻转。接下来,就是更新了。显然,我们应该先更新上一个节点为当前节点。即

Pre = current;

然后将当前节点更新为之前保存的下一个节点

Current = next.

这样将节点遍历到最后一个节点,翻转结束。

总结:翻转指针的核心是建立三个指针索引,分别指向当前节点的上一个节点,当前节点,当前节点的下一个节点。对于链表而言,这种多指针思想是经常用的。

链表翻转

标签:ali   无法   问题   img   总结   现在   next   应该   ima   

原文地址:https://www.cnblogs.com/shaonianpi/p/12158672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!