编写高效算法,找出链表的中间结点。以下哪个算法更高效()。

7 查阅

编写高效算法,找出链表的中间结点。以下哪个算法更高效()。

A.采用快慢指针方法。即:第一步:一个指针走的快,每次走2个结点;一个指针走的慢,每次走1个结点。第二步:当快指针到结尾或空时,慢指针所指结点即为中间结点。注:遇到链表结点为奇数或偶数时,需稍加改进即可。

B.第一步:遍历一遍链表,求出其长度n。第二步:再从头开始遍历链表,到n/2处即可。若n为偶数,中间结点则有2个;若n为奇数,则只有1个。需稍加处理。

C.第一步:将链表中的结点依次放入一个数组中,同时记录结点个数;第二步:数组中间位置即为中间结点。

D.无法实现

参考答案:

答案:采用快慢指针方法。即:第一步:一个指针走的快,每次走2个结点;一个指针走的慢,每次走1个结点。第二步:当快指针到结尾或空时,慢指针所指结点即为中间结点。注:遇到链表结点为奇数或偶数时,需稍加改进即可。