码迷,mamicode.com
首页 > 其他好文 > 详细

快慢指针,怎样快速获取链表的中间元素

时间:2016-05-15 02:09:19      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

有一个链表,怎样快速获取中间节点的元素。

方法1 遍历一下链表,确认长度,获取中间的节点元素,时间复杂度O(N)

方法2 设置两个指针,一个遍历p->nexr  一个 p->next->next,快慢指针的思想  时间复杂度为O(n/2)

 

代码:

 1 //腾讯面试题,获取一个单链表的中间位置
 2 Status GetMidNode(LinkList L,ElemType *e)
 3 {
 4     LinklList search,mid;
 5     mid =search=L;
 6     while (search->next !=Null)
 7        {
 8               //search移动的速度是mid的两倍 
 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        *e=mid->data;
20        return 0;
21  } 

 

快慢指针,怎样快速获取链表的中间元素

标签:

原文地址:http://www.cnblogs.com/biyongyao/p/5494282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!