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");
}
}
我在一个名为dropClass
它的方法中有这段代码,它应该从
链表,它可以工作,但是当我尝试在其中打印它时,toString
我陷入了无限
循环,我发现这行代码follow.setNext(current);
似乎是导致
无限循环,但我不知道该怎么做,如果我把它拿出来它不会删除
node buts 打印正确,这是发生无限循环的地方
//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;
}
}
循环在之后开始while(current != null)
,如果我不删除节点,它会完美运行,有人可以解释我在删除节点时做错了什么吗?
编辑:setNext 方法体
public void setNext(Node next)
{
this.next = next;
}
还有我用来打印链接列表的循环
for(int j = 0;j<list.length;j++)
{
one = list[j];
System.out.println(one);
}
我还应该提到所有链表都在数组调用列表中