顺序表、链表清空和销毁

来源:百度知道 编辑:UC知道 时间:2024/06/25 01:10:39
在严蔚敏书中对线性表的顺序和链式存储结构分别定义了清空ClearList和Destroy方法,这两个方法区别在哪?实现中关键有哪些不同?请详细说明,最好给出实现。谢谢!

我正好在学数据结构,以下是我的理解,自以为还比较靠谱。你参考着看吧。
ClearList只是把线性表中原来存储元素的空间中存的那些元素都清除了,类似于把原线性表改成一个空的线性表,但这个线性表是确实存在的。
而Destroy是把整个线性表占的空间都释放了,这个线性表结构都不存在了,下次想做一个线性表只能重新初始化。
下面是我在老师给的课件找到的粗略算法:
顺序表的:
销毁线性表L
void DestroyList(SqList*L)
{
if (L->elem) free(L->elem); //释放线性表占据的所有存储空间
}
清空线性表L
void ClearList(SqList*L)
{
L->length=0; //将线性表的长度置为0
}
链表的:
销毁链表L
void DestoryList(LinkList *L)
{
NODE *p;
while (L->head){ //依次删除链表中的所有结点
p=L->head; L->head=L->head->next;
free(p);
}
}
清空链表L
void ClearList(LinkList *L)
{
NODE *p;
while (L->head->next){
p=L->head->next; //p指向链表中头结点后面的第一个结点
L->head->next=p->next; //删除p结点
free(p); //释放p结点占据的存储空间
}
}
具体的在C环境编程实现的话还要加工下的。
希望能给你点启发!