java - 通过递归反转单链表
问题描述
这是通过递归反转单链表的代码:
public static LinkedListNode reverse_recursive(
LinkedListNode head) {
if (head == null ||
head.next == null) {
return head;
}
LinkedListNode reversed_list =
reverse_recursive(head.next);
head.next.next = head;
head.next = null;
return reversed_list;
}
我知道递归不是解决这个问题的最佳方法,但我无法弄清楚代码“head.next.next=head”在做什么。我很困惑,请帮我理清思路。谢谢!
解决方案
head --> A
.next --> B
.next --> C
因此,在上面的示例中,head.next
引用了节点 B,并head.next.next
引用了节点 C。
head.next.next = something
因此等价于
nodeB.next = something
在您的代码中,something
是head
. 并head
引用节点 A。因此它为节点 B 的下一个节点分配一个新值,如果节点 A 则这个新值:
head --> A <---------------
.next --> B |
.next --
下面的指令是
head.next = null, which thus leads to
head --> A <---------------
B |
.next --
推荐阅读
- ios - 我应该如何在 iOS 中通过移动 vlc 工具包添加自定义视图
- oracle - 是否可以将 SQL Loader 用于 PostgreSQL 数据库?
- python - python中的连接/连接/聚合函数
- sql - 查找三个表之间的差异
- javascript - nodejs中的Redis缓存
- django - Django Throttling 在生产模式下不起作用
- java - 如何更改 toString() 值
- java - 单击下拉列表后如何避免下拉关闭,实际上我想读取下拉值
- tomcat9 - 从具有不同端口的服务器运行 http 和 https
- python - 如何使用 PKCS11 在 python 中建立 TLS 会话