我的链表函数如下:-
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;
}
为什么这个函数只打印最后一个元素?
函数看起来或多或少是正确的。然而,为什么要将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);
用来检查你的链接是否正确
不能肯定地说,但很可能您的列表实际上只包含一个元素;也就是说,创建列表的代码被破坏了。
我还应该指出,display
方法应该使用一个局部变量来遍历元素。如果你使用实例变量(例如first
),你很容易得到不同的方法相互干扰。
最后,对列表末尾的测试是不正确的。当执行while
测试时,请仔细考虑first
和first.link
所指向的位置。