在单链表中向后移动?

时间:2017-01-25 05:34:27

标签: java

我正在创建我的第一个链接列表,虽然我理解双向链接列表实际上是为了倒退我试图创建一个方法,将当前节点在列表中向后移动一个节点在SINGLY链接列表中。

这是我到目前为止所得到的,我已经包括了我的下一个参考和构造函数:

  //Paramaterized construct
  public ListNode(int aData, ListNode aLink) {
    this.data= aData;
    this.link = aLink;
  }
}
private ListNode head; //First element
private ListNode current; //Current node of interest
private ListNode previous; //Node behind current

public void goToNext () {
  previous = current;
  current = current.link;
}
//TODO: Fix previous
public void goToPrev () {
  if (current != head) {
  }
  else 
    System.out.println("Current node is the head, sorry");

我忘了添加我的私有ListNode类:

private class ListNode
{
    private int data;
    private ListNode link;
    //Default construct
    public ListNode ()
    {
        this.data = data;
        this.link = link;
    }
    //Paramaterized construct
    public ListNode(int aData, ListNode aLink)
    {
        this.data= aData;
        this.link = aLink;
    }
}

我想我必须从列表的开头进行迭代,直到找到next等于当前节点的节点。但我不确定如何准确设置while循环并拥有正确的正文。

2 个答案:

答案 0 :(得分:1)

要做到这一点,你需要用两个指针迭代列表,而不是一个。诀窍是让一个节点正好在一个节点前面,所以当指针#1找到感兴趣的节点时,指针#2是列表中它后面的节点,你可以通过访问#2来“向后移动”。 / p>

答案 1 :(得分:0)

您无法向后迭代单个链接列表。如果你想向后迭代那么你应该双重链接列表。或者你可以在迭代之前获取节点的ref。