我正在创建我的第一个链接列表,虽然我理解双向链接列表实际上是为了倒退我试图创建一个方法,将当前节点在列表中向后移动一个节点在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循环并拥有正确的正文。
答案 0 :(得分:1)
要做到这一点,你需要用两个指针迭代列表,而不是一个。诀窍是让一个节点正好在一个节点前面,所以当指针#1找到感兴趣的节点时,指针#2是列表中它后面的节点,你可以通过访问#2来“向后移动”。 / p>
答案 1 :(得分:0)
您无法向后迭代单个链接列表。如果你想向后迭代那么你应该双重链接列表。或者你可以在迭代之前获取节点的ref。