繁体   English   中英

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

[英]Why my display function of linked list always printing the last element?

链表的我的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;
} 

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

该功能看起来或多或少是正确的。 但是,为什么要将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM