java - 反转循环双向链表

标签 java data-structures linked-list

我正在尝试在循环双向链表上实现reverse()函数。

这是我的代码:

public void reverseCDLL() {

    if (head != null) {

       Node current = head, next, temp;

       do{

           next = current.getNextNode();
           temp = current.getPrevNode();
           current.setPrevNode(current.getNextNode());
           current.setNextNode(temp);
           current = next;

       }while(current != head);
    }
}

输入:1 2 3 4

输出:1 4 3 2

预期输出:4 3 2 1

我即将完成此任务,但有一点是错误的,我只是无法确定它是什么。

任何帮助/提示将不胜感激。

最佳答案

该算法工作正常,您只需将头指针更改为正确的值即可。当您反转链表时,头指向最后一个节点,同样在这种情况下,头也应该指向最后一个节点。

public void reverseCDLL() {

    if (head != null) {

       Node current = head, next, temp;

       do{

           next = current.getNextNode();
           temp = current.getPrevNode();
           current.setPrevNode(current.getNextNode());
           current.setNextNode(temp);
           current = next;

       }while(current != head);
       head = head.getNextNode();
    }
}

关于java - 反转循环双向链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59907243/

相关文章:

c - 为什么在另一个函数中 free()-ing 我的内存 malloc()-ed 会导致崩溃?

java - 尝试附加一行文本时窗口出现 "see-through"- Java

java - 何时使用对象数组而不是 ArrayList<>?

java - 标记不读/写实例状态的方法

algorithm - 不同数字的乘积之和及其计数

c++ - 数据结构 : I am getting undesired value

data-structures - 链表和流在技术上有什么区别?

c - 插入新节点

c++ - 从堆栈 C++ 的单链表实现中弹出

java - 来自 jtextfield 的 Mysql Java 更新列