33,008
社区成员
发帖
与我相关
我的任务
分享
int deletemax(LinkList *&L)
{
int i=0,j=0,max=L->date;
LinkList *p=L,*q=NULL,*r=NULL;
if(p==NULL) //如果链表为空,即返回
return -1;
while(p!=NULL)
{
if(max<p->date)
{
max=p->date;
i=j;
}
j++;
p=p->next;
}
if(i==0) //如果找到的是第一个结点,就删除它
{
q=L;
L=q->next;
delete q;
return max;
}
r=L;
j=0;
while(j<i-1 && r!=NULL) //重新开始找最大结点的前一个位置的指针
{
j++;
r=r->next;
}
if(r==NULL) //这个感觉没有必要,还是写上吧。
return -1;
else
{
q=r->next;
if(q==NULL) //这个感觉也没有必要,写上放心点。
return -1;
r->next=q->next;
delete q;
return max;
}
}