我有一个 linkNode(名为 List),它具有以下值
x y z 1 2 3
我希望它看起来像这样:
x y z 1 2 3 3
我写了以下内容:
ListNode front=list;
ListNode back = list;
while (front != null)
{
back = front;
front = list.getNext();
}
ListNode x = new ListNode (front.getValue(),back.getNext());
back.getNext().setNext(x);
为什么这不起作用?我并没有真正收到错误,当我运行代码时,它会打印出我以前拥有的方法,而这个只是空白
打印方法:
public static void print(ListNode list)
{
String p="";
while(list!=null)
{
p+=list.getValue()+" ";
list=list.getNext();
}
System.out.println(p);
}
添加节点的方法:
ListNode z = new ListNode("x",
new ListNode("y",
new ListNode("z",
new ListNode("1",
new ListNode("2",
new ListNode("3",,null)))));
最佳答案
好吧,这里有很多问题;在你的循环中你做:
front = list.getNext();
这不会去任何地方,只是重复获得列表的头部。尝试:
front = front.getNext();
接下来你要做的:
ListNode x = new ListNode (front.getValue(),back.getNext());
back.getNext().setNext(x);
如果修复上面的循环,此时 front
为 null
,因此变为:
ListNode x = new ListNode (null.getValue(), null);
null.setNext(x);
这会严重崩溃,所以我认为你想要:
ListNode x = new ListNode(back.getValue(),back.getNext());
back.setNext(x);
但是,在没有看到setNext()
等代码的情况下,我不太确定这是否正确。
关于java - 重复链表上的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40967335/