题目描述:
一个带头结点的循环单链表,反复找出单链表中结点值最小的结点并输出,然后将该节点删除,直到单链表空为止,再删除表头结点。
算法思想:
核心代码:
void del_min(LNode* &L)
{
LNode *minp,*minpre;
LNode *p,*pre;
minp=p=L->next;
minpre=pre=L;
while(L->next!=L)//我估计就是考这个吧
{
minp=p=L->next;
minpre=pre=L;
while(p!=L)
{
if(p->data<minp->data)
{
minpre=pre;
minp=p;
}
pre=p;
p=p->next;
}
printf("%d ",minp->data);
minpre->next=minp->next;
free(minp);
}
free(L);
}