0
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);
            }

我还应该提到所有链表都在数组调用列表中

4

0 回答 0