c++寻找链表得中间节点(双指针思想)

c++寻找链表得中间节点(双指针思想),第1张

利用双指针,定义一个快指针fast,慢指针slow ,均指向链表的头节点,快指针每次移动2步(fast=fast->next->next),慢指针每次移动1步(slow=slow->next),则每次循环快慢指针每次相差1步,循环为n/2次(n为链表的长度),则slow此时为链表的中间节点,此时当链表长度为偶数时,slow指针指向中间两个节点中的靠后节点

Node*fast=head,*slow=head;
while(fast!=NULL&&fast->next!=NULL)
{
  fast=fast->next->next;
  slow=slow->next;
}

若是让fast指针指向头节点head->next,此时当链表长度为偶数时指向链表中间节点靠前那个

Node*fast=head->next,*slow=head;
while(fast!=NULL&&fast->next!=NULL)
{ 
  fast=fast->next->next;
  slow=slow->next;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/569314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存