1.顺序表的销毁:
2.单链表的销毁:
3.双链表的销毁:
4.循环单链表的销毁:
5.循环双链表的销毁:
6.顺序栈的销毁:
7.链栈的销毁:
8.顺序队列的销毁:
9.链队列的销毁:
10.二叉树的销毁:
void DestroyList(SqList *L) //销毁线性表
{
free(L); //直接释放顺序表
}
2.单链表的销毁:
void DestroyList(LinkList *&L) //销毁线性表
{
LinkList *p = L, *q = p -> next;
while (q != NULL)
{
free(p);
p = q;
q = p -> next;
}
free(p);
}
3.双链表的销毁:
void DestroyList(DLinkList *&L) //销毁线性表
{
DLinkList *p = L,*q = p -> next;
while (q != NULL)
{
free(p);
p = q;
q = p->next;
}
free(p);
}
4.循环单链表的销毁:
void DestroyList(LinkList *&L) //销毁线性表
{
LinkList *p = L,*q = p -> next;
while (q != L)
{
free(p);
p = q;
q = p -> next;
}
free(p);
}
5.循环双链表的销毁:
void DestroyList(LinkList *&L) //销毁线性表
{
LinkList *p = L, *q = p -> next;
while (q != L)
{
free(p);
p = q;
q = p -> next;
}
free(p);
}
6.顺序栈的销毁:
void DestroyStack(SqStack *&s) //销毁栈s
{
free(s);
}
7.链栈的销毁:
void DestroyStack(LiStack *&s) //销毁栈
{
LiStack *p = s,*q = s -> next;
while (q!=NULL)
{
free(p);
p = q;
q = p -> next;
}
free(p); //此时p指向尾节点,释放其空间
}
8.顺序队列的销毁:
void DestroyQueue(SqQueue *&q) //销毁队列
{
free(q);
}
9.链队列的销毁:
void DestroyQueue(LiQueue *&q) //销毁队列
{
QNode *p = q -> front, *r; //p指向队头数据节点
if (p != NULL) //释放数据节点占用空间
{ r = p -> next;
while (r != NULL)
{ free(p);
p = r; r = p -> next;
}
}
free(p);
free(q); //释放链队节点占用空间
}
10.二叉树的销毁:
void DestroyBTNode(BTNode *&b)
{
if (b!=NULL)
{
DestroyBTNode(b->lchild);
DestroyBTNode(b->rchild);
free(b);
}
}