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環境編程實現的話還要加工下的。
希望能給妳點啟發!