销毁线性表的函数DestroyList(&L)的代码实现
时间: 2024-09-19 19:18:23 浏览: 66
销毁线性表`DestroyList(&L)`的函数通常需要释放线性表中每个元素所占用的内存,并清空指针变量。对于简单的情况,比如使用数组作为底层存储结构,可以这样做:
```c
void DestroyList(List** &L) {
// 检查是否为空
if (*L != NULL) {
// 遍历并销毁每个元素
for (int i = 0; i < (*L)->length; i++) {
free((*L)->data[i]); // 如果是动态分配的内存,记得释放
}
free(*L->data); // 释放整个数组的内存
*L = NULL; // 清空指针,表示线性表已销毁
}
}
```
注意:这里的`List`是一个结构体,包含`length`(长度)和`data`(指向元素的指针)成员。
如果线性表是链式存储,那么实现会有所不同,因为每个节点有自己的内存空间,需要断开链接然后递归或顺序释放节点:
```c
// 假设链表节点为Node,有next指向前一个节点
void DestroyList(Node** &head) {
Node* temp = *head;
while (temp != NULL) {
Node* nextTemp = temp->next;
free(temp);
temp = nextTemp;
}
*head = NULL;
}
```
阅读全文