如何使用头部和尾部找到双向链表的中间元素?

时间:2018-04-17 08:07:19

标签: data-structures linked-list

是否有可能使用头部和尾部找到双向链表的中间元素。我尝试遍历起始节点中的下一个元素和结束节点中的前一个元素,并检查两者的引用是否相同。如果列表中有奇数个元素,这可以正常工作。如果列表中的元素数量是偶数,我无法找到何时停止。

while(head.next != end.previous) {
    head = head.next;
    end = end.previous;
}

1 个答案:

答案 0 :(得分:1)

这样做的一种方法是:

从开头的指针x和结尾的指针y开始。反复执行以下步骤:

  1. 如果x = y,请停止。

  2. 前进x前进。

  3. 如果x = y,请停止。

  4. 向后推进。

  5. 这应该适用于偶数和奇数长度。但它还需要进行2次比较,并假设所有参考文献都是唯一的。