快速找出长度未知链表的中间节点(快慢指针)

思路:设置两个指针,一个指针为fast,一个指针为slow,fast的步长为2,slow的步长为1,当fast到达链表的最后节点时,slow指针所指向的就是链表的中间节点。

具体代码实现:

 1 LinkList *GetMidNode(LinkList *head)
 2 {
 3     LinkList *slow = head;
 4     LinkList *fast = slow;
 5     
 6     while(slow)
 7     {
 8         fast = fast->next;
 9         if(fast)
10         {
11             fast = fast->next;
12             slow = slow->next;
13         }
14     }
15     return slow;
16 }
View Code

快慢指针的其他应用:

  判断单链表是否为循环链表。

 

posted @ 2015-10-21 10:01  天天AC  阅读(238)  评论(0编辑  收藏  举报