在 java 中创建单向链表后如何返回到单向链表的头部?
How to get back to the head of a singly linked list after creating it in java?
我正在编写一个程序,将数字分割成数字,并将数字以相反的顺序存储在链表中。但是我无法理解如何 return 链表?
我尝试创建一个 head ListNode 但失败了。
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solution{
int sum=123;
public ListNode sol(){
answer = new ListNode(0);
while (sum > 0) {
int digit = sum % 10;
answer= new ListNode(digit);
answer= answer.next;
sum /= 10;
}
return //////
}
}
这里:
answer = new ListNode(0);
ListNode
实例是第一个元素,因此是列表的 "root"。但是您的列表只是单链接的。您无法返回到上一个元素!你要记住它是从哪里开始的!
换句话说,你有两个选择:
- 将您的列表变成 double-linked 列表(因此:每个节点都记住其前身)或
- 记住那个根节点。
换句话说:当使用 answer
作为列表中的 "moving pointer" 时,您应该这样做:
root = new ListNode(0); // remember this, it is the start of the list!
answer = root;
然后你必须确保root
保持不变!因为该引用代表(唯一!)列表数据的入口。当你失去它时,一切都失去了;-)
我正在编写一个程序,将数字分割成数字,并将数字以相反的顺序存储在链表中。但是我无法理解如何 return 链表?
我尝试创建一个 head ListNode 但失败了。
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solution{
int sum=123;
public ListNode sol(){
answer = new ListNode(0);
while (sum > 0) {
int digit = sum % 10;
answer= new ListNode(digit);
answer= answer.next;
sum /= 10;
}
return //////
}
}
这里:
answer = new ListNode(0);
ListNode
实例是第一个元素,因此是列表的 "root"。但是您的列表只是单链接的。您无法返回到上一个元素!你要记住它是从哪里开始的!
换句话说,你有两个选择:
- 将您的列表变成 double-linked 列表(因此:每个节点都记住其前身)或
- 记住那个根节点。
换句话说:当使用 answer
作为列表中的 "moving pointer" 时,您应该这样做:
root = new ListNode(0); // remember this, it is the start of the list!
answer = root;
然后你必须确保root
保持不变!因为该引用代表(唯一!)列表数据的入口。当你失去它时,一切都失去了;-)