为什么链表的显示功能总是打印最后一个元素?

时间:2011-07-27 12:02:13

标签: java linked-list

我的链表显示功能如下: -

public void display()
{
    cur = first;

    if(isEmpty())
    {
        System.out.println("no elements in the list");
    }
    else
    {
        System.out.println("elements in the list are:");

        do {
            System.out.println(first.data);
            first = first.link;
        } while(first.link!=null);

        first=cur;
    }

其中currfirst是类节点的引用

public class node
{
      int data;
      Node link=null;
} 

为什么这个函数只打印最后一个元素?

2 个答案:

答案 0 :(得分:1)

该功能看起来或多或少是正确的。但是,为什么要将cur设置为first,然后使用first进行迭代?只需在迭代中使用cur,就不必重置first

检查以确保正确地将节点添加到列表中。因此,如果您认为列表中有3个元素,请在display()

中运行
System.out.println(first.data);
System.out.println(first.link.data);
System.out.println(first.link.link.data);

这是为了检查您的链接是否正确。

答案 1 :(得分:1)

无法确定,但您的列表可能实际上只包含一个元素;即创建列表的代码被破坏。

我还应该指出display方法应该使用局部变量来逐步执行元素。如果您使用实例变量(例如first),您可能会有不同的方法相互干扰。

最后,您对列表末尾的测试不正确。仔细考虑执行first测试时first.linkwhile指向的内容。