有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

单链表恢复中的java错误

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


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

我设想这个算法要做的是,当它移动到一个新节点时,它会将该节点放在一个新列表的开头,并不断重复,直到到达末尾。但是,它只打印“循环”:(


共 (1) 个答案

  1. # 1 楼答案

    您只需按如下方式操作即可:

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