删除单链表中最大元素(唯一)
用设定四个指针,两个指针做最大值的标记,两个指针遍历单链表。因为要删除单链表的元素 必须找到它的前置结点,所以有两个指针是指向最大元素的前置结点。
void ListDelnode(Linknode *L)
{
Linknode *p=L->next,*pre=L;,*maxp,*maxpre;
maxp=p;
maxpre=pre;
if(p!=NULL)
{
while(p->data>maxp->data)
{
maxp=p;
maxpre=pre;//更新maxp maxpre
}
pre=p;
p=p->next;//p pre 前进
}
maxpre->next=maxp->next;//删除maxp
free(maxp);//释放它
}