我一直在寻找Java中的合并排序实现,但不了解以下部分:
Node middle = getMiddle(head); //get the middle of the list
Node left_head = head;
Node right_head = middle.next;
middle.next = null; //split the list into two half's
因此,通过设置middle.next = null,我们将left_head拆分为中间。但是,为什么right_head仍然保留在原处,因为它引用了成为null的middle.next?
更新:好的,所以让我感到困惑的是,
middle.next = null
实际上并未将next Node设置为null,而是将middle's
next变量更新为null,这当然不会影响right_head
。 最佳答案
如果您仔细观察已发布的代码段,在这种情况下,您将看到代码逐行执行。以下是分步说明:
1)middle
设置为指向最中间的节点。
2)left head
指向拆分左侧的第一个节点。
3)right head
指向拆分右侧的第一个节点,实际上是中间节点的下一个节点。
4)当middle.next
设置为null时,节点的链接断开,链接列表分为两半,其中left_head
和right_head
指向相应的左段和右段。
关于java - 链表合并问题的合并排序的Java实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57049259/