为什么我的链表显示函数总是打印最后一个元素



我的链表函数如下:-

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

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

函数看起来或多或少是正确的。然而,为什么要将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测试时,请仔细考虑firstfirst.link所指向的位置。

相关内容

  • 没有找到相关文章

最新更新