【发布时间】:2018-04-17 08:07:18
【问题描述】:
有没有一种方法可以使用头尾找到双向链表的中间元素。我尝试从起始节点遍历到下一个元素,从结束节点遍历到前一个元素,并检查两者的引用是否相同。如果列表中有奇数个元素,这可以正常工作。如果列表中的元素数量是偶数,我无法找到何时应该停止。
while(head.next != end.previous) {
head = head.next;
end = end.previous;
}
【问题讨论】:
-
指向你的双向链表的指针在哪个/在哪里?
-
n/2 可以是列表的中间位置。
-
如果节点数是偶数,则没有中间节点。你能做的最好的就是报告两个节点。
-
@TimBiegeleisen:我们如何获得这些节点?
-
另外,这里还有一个问题。如果两个节点存储完全相同的对象,那么它们的引用可能相等。所以即使是一个奇怪的列表,你的算法也可能会失败。
标签: data-structures linked-list