java - 单链表还原中的错误

标签 java loops linked-list infinite-loop

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

<小时/>
    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;
    } 
<小时/>

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

最佳答案

您可以简单地执行以下操作:

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

关于java - 单链表还原中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59364449/

相关文章:

c - 寻找重叠的算法

javascript - 在javascript中循环和存储不同长度的obj

java - 可以使用两个线程访问 LinkedList 中同一对象的不同属性吗?

c++ - 如何从链表中删除这些节点?

java - 为什么 Java 缺少访问说明符?

java - 如何解决 JBOSS 部署错误 : Packages waiting for a deployer?

java - 与 Sonar 插件关联...组 ID 为空

R中的随机迭代循环

c++ - 为什么我的列表上的迭代失败?

java - TreeMap 之后的排序技术?