数据结构 - java翻转链表是如何实现的?
问题描述
public class Node { public int value; public Node next; public Node(int data) {this.value = data; } public Node reverse(Node head) {Node pre = null;Node next = null;while (head != null) { next = head.next; head.next = pre; pre = head; head = next;}return pre; }
这段代码while循环中他是如何翻转的?想要详细一点的,debug了几次还是没弄懂具体是怎么回事
问题解答
回答1:参考一下,理解目的就比较好理解了。容易混乱的地方就是从右往左来处理,因为得先把后面的东西存起来,不然被覆盖掉就丢了。
prehead +----+ +----+ +> +----+| | | | | | || | | | | | || | | | | | |+----+ +----+ | +----+| | | | | | || | | | | | |+----+ +-+--+ | +----+ | | +-----+ prehead nextnext = head.next;+----+ +----+ +> +----+| | | | | | || | | | | | || | | | | | |+----+ +----+ | +----+| | | | | | || | | | | | |+----+ +-+--+ | +----+ | | +-----+ prehead next+----+ <+ +----+ +----+| | | | | | || | | | | | || | | | | | |+----+ | +----+ +----+| | | | | | || | | | | | |+----+ | +-+--+ +----+| | head.next = pre;+----+ next preheadpre = head;+----+ <+ +----+ +----+ head = next;| | | | | | || | | | | | || | | | | | |+----+ | +----+ +----+| | | | | | || | | | | | |+----+ | +-+--+ +----+| |+----+回答2:




Ps:建议先多了解一下链表
相关文章:
1. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?2. css - ul ol前边的标记如何调整样式呢3. golang - 用IDE看docker源码时的小问题4. dockerfile - 为什么docker容器启动不了?5. dockerfile - [docker build image失败- npm install]6. java - servlet的init方法和选择Filter的init方法来加载配置文件,二者有何区别?7. android - 哪位大神知道java后台的api接口的对象传到前端后输入日期报错,是什么情况?求大神指点8. macos - mac下docker如何设置代理9. css - chrome浏览器input记录上次cookie信息后,有个黄色背景~如何去除!10. javascript - 求一款靠谱点的移动端图片查看器插件,老司机速进!

网公网安备