我正在尝试为链表创建一个 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
被设置为
设置为 newNode
的 next
字段之前的 newNodefirst
的前一个(空)值。因此,当列表非空时,循环将无限迭代列表中 next
字段指向自身的最后一个元素。
出于好奇,您为什么要尝试实现自己的链表功能而不是基于可用的包(例如 java.util.LinkedList<E>)构建?
关于java - 为什么会无限循环? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890856/