为什么我的反向LinkedList方法不能多次工作



我有以下方法:

public static IntNode reverse (IntNode head) {
IntNode prev = null;
IntNode curr = head;
IntNode next = null;
while(curr!=null) {
next = curr.link;
curr.link = prev;
prev = curr;
curr = next;
}
return prev;
}

这非常有效,但当运行两次时,它只返回链表中的第一个(技术上是最后一个(节点,什么都没有,为什么会出现这种情况,你能帮我解决这个问题吗?谢谢

例如:反转前:10255.142.反转后:2.145.2510再次键入反转后:10

我认为这个方法是正确的。只要确保无论何时调用reverse((方法,都将reverse方法的结果分配给它的头。

head = reverse(head);//correct coz head changes after reversal

当您未能将reverse((方法的结果分配给head时。

reverse(head)//Wrong coz head won't change after reversal

头将不会被更新,它将只指向链表的尾部。希望这能有所帮助。

您的整个列表以head开头。一旦切换节点,head现在指向最后一个节点(即其.link为null(。

您需要将head重置为第一个节点,以便访问列表。

相关内容

  • 没有找到相关文章

最新更新