题目:
按递增次序输出一个带头节点的单链表中各结点的数据元素,并释放结点所占的存储空间。
思路:
对列表进行多次遍历,每次遍历找出整个列表中最小值元素,输出并释放该结点,直到列表为空,最后释放头结点。
代码:
void 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;
free(u); //删除元素值最小的结点,释放结点空间
}
free (head);//释放头结点
}
考察内容:
单链表