题目描述
难度:
重要性:
给定一个带头结点的单链表,设head为头指针,节点结构为(data,next),data为整型元素,next为指针,试写出算法:按照递增次序输出单链表中各节点数据元素,并释放节点所占的存储空间(要求:不允许使用数组作为辅助空间)。
void Min_Delete(LinkList &head){
while(head->next!=null){ //循环到只剩头结点
LNode *pre=head; //pre为元素最小值节点的前驱节点的指针
LNode *p=pre->next; //p为工作指针
LNode *u; //指向被删除节点
while(p->next!=null){
if(p->next->data<pre->next->data)
pre=p; //记住当前最小值节点的前驱
p=p->next;
}
print(pre->next->data); //输出元素最小的节点,释放节点空间
u=pre->next;
pre->next=u->next;
delete u;
}
delete head; //释放头结点
}