gpt4 book ai didi

java - 成对交换节点

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:05 25 4
gpt4 key购买 nike

在准备工作面试时,我目前正在复习和审查我的数据结构。我目前正在解决这个问题,我必须交换链表中的每两个节点。我的代码如下:

public ListNode swapPairs(ListNode head) {
ListNode dummy = new ListNode(0);
dummy.next = head;
while (head != null && head.next != null){
ListNode cur = head;
ListNode prev = head.next;
head = prev;
head.next = cur;
head.next.next = prev.next;
head = prev.next;

}
return dummy.next;
}

由于某种原因,这给了我一个无限循环,尽管我的逻辑对我来说似乎非常合理。我做错了什么?

最佳答案

您已经丢失了列表中后面的元素。

如果您的列表是 1->2->3

第一

    curr=1
prev=head.next=2

现在

    head = prev; head=2

head.next = cur; head.next=1

这里您已经修改了 prev.next。所以 prev.next 基本上是 1

下面的语句现在导致循环

    head.next.next = prev.next;

这样,您就失去了对 3 的访问权while 循环是无限的,因为它基本上停留在前两个数字

在反转前两个元素之前存储第三个元素

关于java - 成对交换节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48857372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com