本关任务:编写一个函数实现链表表的清空。 函数原型:status ClearList(SqList &L) 功能说明:若链表L不存在,返回INFEASIBLE。否则清空链表L,返回OK;
时间: 2023-07-12 18:24:29 浏览: 105
通信工程制图与概预算接入网工程:接入网工程概预算软件编制.pdf
好的,让我来帮你编写这个函数。
根据你提供的函数原型,我猜测你使用的是链式存储结构实现链表。那么清空链表就是将表中的所有节点都删除,将头节点的指针指向NULL。
以下是函数的实现代码:
```c++
typedef struct LNode {
ElemType data; // 数据域
struct LNode *next; // 指针域
} LNode, *LinkList;
status ClearList(LinkList &L) {
if (!L) { // 链表不存在
return INFEASIBLE;
}
LNode *p = L->next; // p指向第一个节点
while (p) { // 循环遍历链表
LNode *q = p->next; // q指向下一个节点
free(p); // 释放当前节点的内存
p = q; // p指向下一个节点
}
L->next = NULL; // 头节点指针指向NULL
return OK;
}
```
首先判断链表是否存在,即头节点是否为空指针。如果为空指针,说明链表不存在,返回 `INFEASIBLE`。否则,使用指针 `p` 指向第一个节点,循环遍历链表,使用指针 `q` 指向下一个节点,释放当前节点的内存,直到遍历完整个链表。最后将头节点的指针指向NULL,返回 `OK`。
阅读全文