从用户定义的链表中删除节点后的无限循环(java)
我在一个名为从用户定义的链表中删除节点后的无限循环(java),java,linked-list,nodes,infinite-loop,user-defined,Java,Linked List,Nodes,Infinite Loop,User Defined,我在一个名为dropClass的方法中有这段代码,它应该从 链表和它的工作,但当我试图打印它在toString我陷入了一个无限 循环,我发现代码行是follow.setNext(当前)这似乎是导致 无限循环,但我不知道该怎么做来修复,如果我取出它,它不会删除 节点但是打印正确,这里是无限循环发生的地方 public void dropCourse(String c) { if(isEmpty()) throw new NoSuchElementException("Emp
dropClass
的方法中有这段代码,它应该从
链表和它的工作,但当我试图打印它在toString
我陷入了一个无限
循环,我发现代码行是follow.setNext(当前)代码>这似乎是导致
无限循环,但我不知道该怎么做来修复,如果我取出它,它不会删除
节点但是打印正确,这里是无限循环发生的地方
public void dropCourse(String c)
{
if(isEmpty())
throw new NoSuchElementException("Empty Schedule");
Node current = firstNode;
Node follow = firstNode;
follow = follow.getNext();
current = current.getNext();
while(!current.getClasses().equals(c) && current != null)
{
follow = current.getNext();
current.setNext(follow.getNext());
follow = null;
}
if(current.getClasses().equals(c))
{
follow.setNext(current);
System.out.println("Class removed");
}
}
循环在之后开始,而(current!=null)
时,如果我不删除节点,它可以完美地工作。有人能解释我在删除节点时做错了什么吗
编辑:setNext方法主体
//Reads schedule
public String toString()
{
if(isEmpty())
return " ";
else
{
String s = " ";
Node current = firstNode;
System.out.print("ID:");
System.out.print(current.getId());
current = current.getNext();
while(current != null)
{
s = s + "Class:"
+ current.getClasses()
+ " Section:"
+ current.getSection()
+ " Credits:"
+ current.getCredit()
+ " ";
current = current.getNext();
}
return s;
}
}
还有我用来打印链接列表的循环
public void setNext(Node next)
{
this.next = next;
}
for(int j=0;jShow setNext方法的主体。好的,我更新了我的postWhy,将列表元素存储在一个数组中?为什么不使用getNext()
方法来迭代列表?数组的每个元素都是一个特殊的链表,列表[1]例如,包含一个链接列表,其中一个节点包含学生id,另一个节点包含关于他们正在学习的课程的信息,而列表[2]会有不同的id和不同的课程信息为什么不定义一个包含您感兴趣的字段的类,并将列表元素保存到单个对象,而不是使用列表列表来实现这一点?
for(int j = 0;j<list.length;j++)
{
one = list[j];
System.out.println(one);
}