我的链表显示功能如下: -
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;
}
其中curr
和first
是类节点的引用
public class node
{
int data;
Node link=null;
}
为什么这个函数只打印最后一个元素?
答案 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.link
和while
指向的内容。