销毁单向链表 bool Destroy_LinkedList(Node*pnew)
时间: 2023-07-11 08:21:05 浏览: 96
这个函数的作用是销毁一个单向链表,其中pnew是链表的头节点指针。
函数的实现可以采用递归方式,具体步骤如下:
1. 如果pnew指针为空,直接返回true。
2. 否则,递归销毁链表中下一个节点,即调用Destroy_LinkedList(pnew->next)。
3. 销毁当前节点,即释放pnew指针指向的内存空间,然后将pnew指针置为NULL。
4. 返回true。
以下是具体的代码实现:
```c++
bool Destroy_LinkedList(Node* pnew) {
if (pnew == NULL) {
return true;
}
Destroy_LinkedList(pnew->next);
free(pnew);
pnew = NULL;
return true;
}
```
需要注意的是,销毁链表后,头节点指针pnew也需要置为NULL,否则pnew仍然指向之前链表的头节点,可能导致内存泄漏或访问非法内存的错误。
相关问题
销毁单向链表 bool Destroy_LinkedList(first)
这个函数的作用是销毁一个单向链表,其中 `first` 是链表的头节点指针。
函数的实现可以采用循环方式,具体步骤如下:
1. 定义一个临时指针变量 `current`,将其初始化为头节点指针 `first`。
2. 循环遍历链表,当 `current` 指针不为空时,执行以下步骤:
1. 定义一个临时指针变量 `temp`,将其初始化为 `current` 指针指向的下一个节点。
2. 销毁当前节点,即释放 `current` 指针指向的内存空间。
3. 将 `current` 指针指向下一个节点,即将 `current` 赋值为 `temp`。
3. 将头节点指针 `first` 置为 `NULL`,表示链表已被销毁。
以下是具体的代码实现:
```c++
bool Destroy_LinkedList(Node* first) {
Node* current = first;
while (current != NULL) {
Node* temp = current->next;
free(current);
current = temp;
}
first = NULL;
return true;
}
```
需要注意的是,销毁链表后,头节点指针 `first` 也需要置为 `NULL`,否则 `first` 仍然指向之前链表的头节点,可能导致内存泄漏或访问非法内存的错误。
输出整形链表 void Print_LinkedList(Node*pnew)
好的,以下是输出整形链表的函数实现代码:
```c++
void Print_LinkedList(Node* pnew)
{
while (pnew != nullptr)
{
cout << pnew->val << " ";
pnew = pnew->next;
}
cout << endl;
}
```
其中,Node 是链表的节点数据结构,包含了一个整型变量 val 和一个指向下一个节点的指针 next。
在函数中,我们使用了一个 while 循环来遍历链表,每次输出当前节点的 val 值,并将指针指向下一个节点,直到链表末尾为止。最后输出一个换行符,以便下一次输出不会与本次输出连在一起。
阅读全文