java - 链表基础
问题描述
我正在尝试了解链接列表的基础知识。我的 LinkedList 类的定义如下:
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
现在我面临一个问题。我的代码如下:
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode prev = dummy;
ListNode slow = head;
head.next = null;
prev.next = slow;
ListNode temp = slow.next;
prev.next = temp;
System.out.println(dummy.next); //comes out null
为什么它显示为空?dummy.next
是指着头,我只改变slow
和prev
?
编辑:
我们可以使用slow
和head
互换吗?如果是,那么为什么会发生这种情况?
// head points to a Linked list starting from 1 in 1 -> 2 -> 3
ListNode curr = head;
while(curr.next!= null){
curr= curr.next;
}
System.out.println(curr);
System.out.println(head); //these are different and head does not change
解决方案
您声明dummy
指向与 相同的对象head
。再后来,你做 head.next = null;
Sincedummy
和head
引用同一个对象,dummy.next
也是null。
编辑:
进一步查看您的代码后,我发现了问题。
我会将您的代码与行号一起粘贴,以便于参考。
ListNode dummy = new ListNode(0); // Line 1
dummy.next = head; // Line 2
ListNode prev = dummy; // Line 3
ListNode slow = head; // Line 4
head.next = null; // Line 5
prev.next = slow; // Line 6
ListNode temp = slow.next; // Line 7
prev.next = temp; // Line 8
System.out.println(dummy.next); // Line 9
第 3-4 行:现在prev
指向与 相同的对象dummy
,并且与 和slow
相同head
。我们基本上可以互换使用这些“名称”。
第 5 行:head
在 null 旁边设置
第 6 行:与运行相同:dummy.next = head
第 7 行:temp
现在指向head
的下一个(因为slow
和head
相同)。请记住,head
's next 为空(第 5 行)。基本上,这意味着temp
为空。
第 8 行:与 相同dummy.next
= temp
。由于 temp 为 null,因此您将dummy
' 设置为 null 旁边
推荐阅读
- django - 如何在 django 模板中将 API 与 HTML 集成?
- windows - 创建 autorun.inf - “找不到应用程序”错误
- java - 给定一个 web 元素,单击它会导致页面重新加载吗?
- c++ - 在Arduino中将(逗号分隔的十六进制)字符串转换为无符号字符数组
- symfony - Nelmio API 文档数组参数
- reactjs - 突变后 React Apollo 客户端道具 refetchQueries
- jenkins - 詹金斯:让一个工作等待另一个工作正在运行
- python - Python - 根据日期过滤 SQL 查询
- android - 蓝牙配对无需用户确认
- r - Rvest 网络抓取有限的结果 (R)