删除在单链表中最大值元素(唯一)

删除单链表中最大元素(唯一)

用设定四个指针,两个指针做最大值的标记,两个指针遍历单链表。因为要删除单链表的元素 必须找到它的前置结点,所以有两个指针是指向最大元素的前置结点。

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);//释放它
}

你可能感兴趣的:(笔记,线性表)