[英]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.