有头结点的链表如何置空用c++代码举例
以下是一个示例代码,演示如何将带有头结点的链表置空:
#include <iostream>
// 定义链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 函数:将链表置空
void clearList(ListNode* head) {
ListNode* curr = head->next; // 从头结点的下一个节点开始
while (curr != nullptr) {
ListNode* temp = curr;
curr = curr->next;
delete temp; // 释放节点内存
}
head->next = nullptr; // 头结点的next指针指向空
}
// 测试用例
int main() {
// 创建一个带有头结点的链表
ListNode* head = new ListNode(0);
head->next = new ListNode(1);
head->next->next = new ListNode(2);
head->next->next->next = new ListNode(3);
// 输出原链表
std::cout << "原链表:";
ListNode* curr = head->next;
while (curr != nullptr) {
std::cout << curr->val << " ";
curr = curr->next;
}
std::cout << std::endl;
// 将链表置空
clearList(head);
// 输出置空后的链表
std::cout << "置空后的链表:";
curr = head->next;
while (curr != nullptr) {
std::cout << curr->val << " ";
curr = curr->next;
}
std::cout << std::endl;
delete head; // 释放头结点内存
return 0;
}
这段代码首先定义了一个链表节点结构体ListNode,包含一个整数值val和指向下一个节点的指针next。然后定义了clearList函数,用于将链表置空。该函数从头结点的下一个节点开始,逐个删除节点并释放内存,直到链表末尾。最后,通过创建一个带有头结点的链表,并调用clearList函数将链表置空。输出置空后的链表,可以看到链表已经为空。最后,释放头结点的内存。
原文地址: https://www.cveoy.top/t/topic/i5ja 著作权归作者所有。请勿转载和采集!