单链表还原中的错误

bug in single linked list reversion

单链表反转算法中的无限循环。我试着在一张纸上写代码,但仍然找不到错误


    public void reverse ()
    {
    Node pointer = list;
    Node newList = new Node();
    Node temp = new Node();
    Node tempMoving = new Node();

    if (pointer != null)
    {
        newList = pointer;

        while (pointer.next != null)
        {
            System.out.println ("loop");
            temp = pointer;
            pointer = pointer.next;
            temp.next = pointer.next;
            tempMoving = pointer;
            tempMoving.next = newList;
            newList = tempMoving;
        }
    }

    list = newList;
    } 

我设想这个算法要做的是,当它移动到一个新节点时,它会将该节点放入一个新列表的开头,它会一直重复直到到达结尾。但是,它只打印 "loop" :(

您可以简单地按照以下步骤操作:

public void reverse() {
    // Assuming `head` is the first node in linked list
    Node current = head, previous = null, forward = null;
    while (current.next != null) {
        forward = current.next;
        current.next = previous;
        previous = current;
        current = forward;
    }
    head = current;
    head.next = previous;
}