繁体   English   中英

反转循环双向链表

[英]Reversing a circular doubly 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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM