数据库结构:已知一个带头结点的单链表L,试编写一个算法删除L中值最大的结点。

来源:百度知道 编辑:UC知道 时间:2024/06/24 01:30:56

void del_max(linklist L)
{
linklist p=L,r=L,s=L;//记录最大节点的前驱节点
while(!p->next)
{
r=p;//当前检测节点的前驱节点
p=p->next;//当前与最大值比较的节点比较
if(p->data>s->next->data)//若当前节点比最大节点大
s=r;//最大节点的前驱为当前节点前驱
}
s->next=s->next->next;//删除最大节点
}

bool del(linklist h,int i,int n)
{
linklist p=L,q;
while(i>0&&!p->next){p=p->next;i--;}
if(p=NULL)//链表无第i个节点
return false;
q=p;
while(n>0&&!p->next){p=p->next;n--}
if(p=NULL&&n>0){q->next=NULL;return false;}
if(p=NULL&&n==0)q->next=NULL;
else q->next=p;
return ture;
}