java - 为什么会无限循环? ( java )

标签 java insert linked-list infinite-loop

我正在尝试为链表创建一个 add 方法,但由于某种原因(这对我来说并不明显,事实上我来这里是为了帮助查找错误)它每次都会进入无限循环。

编辑:我发现了错误,我会保留我的原始代码,并在注释中加上更正后的代码

public void insert(String majorName)
{
    MajorNode newNode = new MajorNode(majorName, 1);
    boolean inList = false;
    MajorNode current = first;

    if(isEmpty())
    {
        first = newNode;
                    // inList = true;
    }
    else
    {
        while(current.next != null)
        {
            if(current.majorName.equalsIgnoreCase(majorName))
            {
                current.frequency++;
                inList = true;
                break;
            }
            else
            {
                current = current.next;
            }
        }
    }

    if(!inList)
    {
        newNode.next = first;
        first = newNode;
    }
}

如果需要,这是我的节点类:

public class MajorNode 
{
    public String majorName;
    public int frequency;
    public MajorNode next;

    public MajorNode(String majorName, int frequency)
    {
        this.majorName = majorName;
        this.frequency = frequency;
    }

    public String toString()
    {
        return majorName + " " + frequency;
    }
}

最佳答案

在第一次调用 insert() 时,假设 isEmpty() 返回 true,因此 first 被设置为 newNodenext 字段之前的 newNode 设置为 first 的前一个(空)值。因此,当列表非空时,循环将无限迭代列表中 next 字段指向自身的最后一个元素。

出于好奇,您为什么要尝试实现自己的链表功能而不是基于可用的包(例如 java.util.LinkedList<E>)构建?

关于java - 为什么会无限循环? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890856/

相关文章:

java - 使用ADT的Postfix的双链接双栈Java

java - 链表的迭代器

java - Android Studio 不断在运行 OneDrive 的计算机上的错误位置生成 .android 文件夹

java - 通过 Ajax 从 Google Web Toolkit 加载 HTML 模板?

java - 在常量字符串中查找变化字符串的最快算法/方法?

linux - 如何找到属于内核的地址

java - 在 Java 中发送 HTTP POST 请求并在 PHP 中接受 POST 请求

mysql - 在存在的地方插入

php - 在第 3 个表中插入数据,并在其他 2 个表中插入值

c++ - C++链表递归问题