Java 反转循环双链接列表
我试图在循环双链接列表上实现一个reverse()函数 这是我的密码:Java 反转循环双链接列表,java,data-structures,linked-list,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.setPre
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);
}
}
输入:1234
输出:1432
预期输出:4321
我很快就要完成这件事了,但有一点是错的,我就是不能确定这是什么
任何帮助/提示都将不胜感激。该算法运行良好,您只需将头部指针更改为正确的值即可。反转链接列表时,头部应指向最后一个节点,同样,在这种情况下,头部也应指向最后一个节点
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();
}
}
嘿,@mathnob,你的算法是正确的,它正在反转循环链表。但是你的头仍然指向1,因此输出是
1432
。您可以最后将头设置为头->上一个,它会起作用。您只需交换头和尾,然后迭代链接列表,交换每个节点的下一个和上一个引用。确保在一次完整迭代后停止此操作。@MathNoob,很抱歉应该是头=头->下一个