链式线性单链表——删除节点最大元素

 删除节点中元素最大的节点
				   void delmaxnode(LinkList *&L)
				   {
				   	LinkList*p=L->next, *pre = L,*maxp=p,*maxpre = pre;
					   while(p!=NULL)
				   	{
				   		if(maxp->data<p->data)
				   		{
				   			maxp = p;
				   			maxpre = pre;
						   }
						   pre = p;
						   p=p->next;
					   }
					   maxpre->next=maxp->next;
					   free(maxpre);
					} 

  

 

  该过程总共运用到了四个指针,为防止删除之后仍然保留链表的连续,其中*pre *p一组相伴指针(我觉得比较形象,一起跟着移动)负责向前查找数值,并且跟*maxpre与*maxp这一组相伴指针进行数值对比,具体是*p->data与*maxp->data进行比较,之后如果maxprex<p,则将maxpre移动到p当下的位置,p则继续往下找,不断对比,直至表尾,最后释放maxp空间。

 

 

 

图示:

 

posted @ 2022-03-11 19:45  赵颖  阅读(363)  评论(0编辑  收藏  举报