我正好在學資料結構,以下是我的理解,自以為還比較靠譜。你參考著看吧。
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;
p=L->head; L->head=L->head->next;
free(p);
清空連結串列L
void ClearList(LinkList *L)
while (L->head->next){
p=L->head->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;
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指向連結串列中頭結點後面的第一個結點
free(p); //釋放p結點佔據的儲存空間
}
}
具體的在C環境程式設計實現的話還要加工下的。