//任务:按递增序列输出单链表中各节点数据元素,并删除此元素
//思想,遍历一次找到一个最小结点,输出并删除,以此类推遍历n次,每次都找到最小结点输出并删除,
//时间复杂度n²
void del_min(LinkList& L)
{//minpre用于记录最小结点的前驱结点
LNode * minpre = L, * p = L->next,*q;
while (L->next!=NULL)
{
while (p->next!=NULL)//至少剩余两个结点才能比较
{//p的下一个结点小于最小结点,则记录p的下一个结点的前驱结点
if (p->next->data < minpre->next->data)
minpre = p;
p = p->next;
}
cout << minpre->next->data << " ";
q = minpre->next;
minpre->next = q->next;
free(q);
minpre = L; p = L->next;
}
free(L);
}