在Java中创建单链列表后,如何回到单链列表的开头?

时间:2019-06-17 11:24:14

标签: java linked-list singly-linked-list

我正在编写一个程序,将数字切成数字,然后以相反的顺序将数字存储在链接列表中。但是我不明白如何返回链表?

我尝试创建头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 //////
  }
}

1 个答案:

答案 0 :(得分:3)

这里:

answer = new ListNode(0);  

ListNode实例是第一个元素,因此是列表的“根”。但是您的列表仅被单链接。您无法返回上一个元素!您必须记住它的开始位置!

换句话说,您有两个选择:

  • 将您的列表转换为双向链接列表(因此:每个节点都记住其前身)或
  • 记住该根节点。

换句话说:当使用answer作为列表中的“移动指针”时,您应该执行以下操作:

root = new ListNode(0); // remember this, it is the start of the list!
answer = root;

然后您必须确保保持root不变!因为该引用代表列表数据的(唯一!)入口。当您丢失它时,一切都将丢失;-)