在 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保持不变!因为该引用代表(唯一!)列表数据的入口。当你失去它时,一切都失去了;-)