快慢指针问题

Posted 蒋酱酱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快慢指针问题相关的知识,希望对你有一定的参考价值。

问题概述:

     快速找到未知长度单链表的中间结点。

代码实现:

 1 Status GetMidNode(LinkList L, ElemType *e)
 2 {
 3     LinkList search, mid;
 4     mid = search = L;
 5 
 6     while (search->next != NULL)
 7     {
 8         //search移动的速度是 mid 的2倍
 9         if (search->next->next != NULL)
10         {
11             search = search->next->next;
12             mid = mid->next;
13         }
14         else
15         {
16             search = search->next;
17         }
18     }
19 
20     *e = mid->data;
21 
22     return OK;
23 }

 

以上是关于快慢指针问题的主要内容,如果未能解决你的问题,请参考以下文章

算法分析如何理解快慢指针?判断linked list中是否有环找到环的起始节点位置。以Leetcode 141. Linked List Cycle, 142. Linked List Cycl(代码

141.Linked List Cycle 快慢指针

链表的排序(归并排序+快慢指针)

一文学会链表快慢指针解题技巧

Leetcode234. 回文链表(快慢指针+反转链表)

快慢指针法解决链表问题