【发布时间】:2016-05-03 00:05:04
【问题描述】:
我正在尝试在 Java 中切换链表中的两个节点,但遇到了一些问题。我的排序算法正常工作,因为我通过切换节点的内容来检查它,但是在尝试切换节点本身时我遇到了问题。
以下是我的节点切换代码:
Node tmp = current;
tmp.next = current.next.next;
Node tmp2 = current.next;
tmp2.next = current;
current.next = tmp;
current = tmp2;
但是,使用此代码,我的循环一直在循环,所以我确信我的切换逻辑存在问题。如果有人能帮我解决这个问题,我将不胜感激。
** 澄清一下:我的目标是切换 current 和 current.next。
谢谢!
【问题讨论】:
-
你打算切换哪两个节点?
-
我的目标是切换current和current.next
-
当我回到大学时,我确保在我想交换的第一个
node之前抓住了node。此时它只是正确链接了下一个 3nodes。 -
当您设置
tmp.next = current.next.next时,您也设置了current.next = current.next.next,因为tmp也引用了current。这意味着您丢失了对current.next的引用。 -
你认为这两行代码有什么作用:
Node tmp = current; current.next = tmp?这些行执行后current.next指向哪里?
标签: java linked-list logic