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);
}
また、すべてのリンクされたリストが配列呼び出しリストにあることにも言及する必要があります