利用双指针,定义一个快指针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; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)