重复链表上的最后一个元素

时间:2016-12-05 04:55:08

标签: java list linked-list

我有一个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)))));

1 个答案:

答案 0 :(得分:1)

好的,这里有很多问题;在你的循环中你做:

front = list.getNext();

这不会去任何地方,只是重复获得列表的头部。尝试:

front = front.getNext();

接下来你做:

ListNode x = new ListNode (front.getValue(),back.getNext());
back.getNext().setNext(x);

如果你修复了上面的循环,此时frontnull,那么这就变成了:

ListNode x = new ListNode (null.getValue(), null);
null.setNext(x);

这会严重崩溃,所以我想你想要:

ListNode x = new ListNode(back.getValue(),back.getNext());
back.setNext(x);

但是,如果没有看到setNext()等的代码,我不太确定这是否正确。