顺序表、链表清空和销毁
答案:1 悬赏:80 手机版
解决时间 2021-04-06 06:14
- 提问者网友:回忆在搜索
- 2021-04-05 20:04
顺序表、链表清空和销毁
最佳答案
- 五星知识达人网友:白昼之月
- 2021-04-05 21:26
我正好在学数据结构,以下是我的理解,自以为还比较靠谱。你参考着看吧。
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环境编程实现的话还要加工下的。
希望能给你点启发!
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环境编程实现的话还要加工下的。
希望能给你点启发!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯