快慢指针,怎样快速获取链表的中间元素
有一个链表,怎样快速获取中间节点的元素。
方法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 }
博客园的文章都是大学时写的,质量不太好。
我的新文章都会发布再新的 blog :https://blog.biyongyao.com
请大家关注哟!!