是否有可能使用头部和尾部找到双向链表的中间元素。我尝试遍历起始节点中的下一个元素和结束节点中的前一个元素,并检查两者的引用是否相同。如果列表中有奇数个元素,这可以正常工作。如果列表中的元素数量是偶数,我无法找到何时停止。
while(head.next != end.previous) {
head = head.next;
end = end.previous;
}
答案 0 :(得分:1)
这样做的一种方法是:
从开头的指针x和结尾的指针y开始。反复执行以下步骤:
如果x = y,请停止。
前进x前进。
如果x = y,请停止。
向后推进。
这应该适用于偶数和奇数长度。但它还需要进行2次比较,并假设所有参考文献都是唯一的。