我正在尝试在循环双向链表上实现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/