我正在尝试创建一个将节点添加到链接列表的方法。该方法采用int(指定新链接应该去的位置)和String(因为我的链表保存字符串)。我写了一些代码,我认为会在列表中的特定位置添加链接,但是当我在添加新节点之后打印我的列表时,我看到新节点尚未添加。我很惊讶,因为我在编写代码时仔细测试代码的行为,并且add方法似乎按照我的预期进行 - 但是新添加的链接在添加新链接后没有反映出更改。谁能告诉我哪里出错:/
ps:这些课程和方法的名称不值得讨论,我的老师选择了这些名称,这就是他们必须留下来的方式。
谢谢!
class LinkedListTest
{
public static void main(String[] args)
{
LinkedList list = new LinkedList();
list.insertFirst("cat");
list.insertFirst("dog");
list.insertFirst("fish");
list.insertFirst("cow");
list.insertFirst("horse");
list.insertFirst("pig");
list.insertFirst("chicken");
list.add(3, "mouse");
list.print();
}
}
public class LinkedList
{
private Link first;
public LinkedList()
{
first = null;
}
public void insertFirst(String word)
{
Link link = new Link(word);
link.next = first;
first = link;
System.out.print(first.item + " ");
}
public String deleteFirst()
{
Link temp = first;
first = first.next;
return temp.item;
}
public String get(int index)
{
Link current = first;
while (index > 0)
{
index--;
current = current.next;
}
return current.item;
}
public void add(int index , String someString)
{
Link current = first;
while (index>0)
{
index--;
current = current.next;
}
Link newLink = new Link(someString);
newLink.next = current;
current = newLink;
}
public void print()
{
System.out.println("-----------PRINTING LIST------------");
Link current = first;
while(!(current==null))
{
System.out.println(current.item);
current = current.next;
}
}
}
public class Link
{
public String item;
public Link next;
public Link(String theItem)
{
item = theItem;
}
}
答案 0 :(得分:3)
插入这样的列表时。您将不得不设置两个“下一个”链接。下一个指向您要插入的项目,下一个指向您要插入的项目,指向您正在搜索的项目。
希望这有帮助。
答案 1 :(得分:2)
查看将newLink添加到当前列表的位置。提示......你不是。您更新current
,这是一个指向newLink的局部变量,但您从未将newLink设置为当前链接列表中实际存在的任何内容的next
。
答案 2 :(得分:2)
newLink.next = current;
current = newLink;
add
类的LinkedList
方法中的上述代码应为: -
newLink.next = current.next;
current.next = newLink
current = newLink;
我希望这可以解决你的问题。您需要设置两个下一个链接以在中间插入节点。一个在当前节点指向下一个节点,一个在prevoius节点指向当前节点。