C++删除链表中间节点的方法
本文实例讲述了C++删除链表中间节点的方法。分享给大家供大家参考,具体如下:
题目:
给定链表头结点head,实现删除链表的中间节点函数。
解题思路及代码:
快慢指针,快指针走两步,慢指针一步。
当快指针走到终点时,慢指针正好是链表中间节点,删除此节点即可。
链表结构定义:
typedefstructNode
{
intdata;
structNode*next;
}node,*pLinkedList;
算法C++代码:
Node*removeMidNode(pLinkedListhead)
{
if(head->next==NULL||head==NULL)
returnhead;
if(head->next->next==NULL)
returnhead->next;
pLinkedListfast=head;
pLinkedListslow=head;
pLinkedListpre=NULL;
/*
head12345
preslowfast
*/
//1个节点
if(head->next->next==NULL)
returnhead->next;
while(fast->next!=NULL&&fast->next->next!=NULL)
{
pre=slow;
fast=fast->next->next;
slow=slow->next;
}
//此时fast已到终点,slow为中间节点,pre为中间节点前一个节点
pre->next=slow->next;
free(slow);
slow=NULL;
returnhead;
}
希望本文所述对大家C++程序设计有所帮助。
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短