2011-07-27 36 views
0

我的链接列表的dipslay功能如下: -为什么我的链表显示功能总是打印最后一个元素?

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; 
} 

为什么这个功能仅在打印的最后一个元素类节点的参考?

+0

如果这是家庭作业,请为此添加标签。如果这不是作业,请使用'java.util.LinkedList'。 – TC1

回答

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

这是不可能的,但很可能你的列表实际上只包含一个元素;即创建列表的代码被破坏。

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

最后,您对列表末尾的测试不正确。仔细考虑firstfirst.link指向什么时候执行while测试。

相关问题