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

方法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  } 

 

相关文章:

  • 2021-07-05
  • 2021-08-21
  • 2021-06-08
  • 2021-06-25
猜你喜欢
  • 2022-12-23
  • 2022-02-14
  • 2021-12-26
  • 2022-12-23
  • 2022-12-23
  • 2021-10-21
  • 2021-11-12
相关资源
相似解决方案