用c++创建链表实现将数12345678依次插入链表打印链表释放链表
时间: 2024-07-21 21:00:49 浏览: 47
在C++中,我们可以使用结构体或类定义链表节点,并提供方法来添加、遍历和释放链表。这里是一个简单的示例,演示如何创建链表并执行指定操作:
```cpp
#include <iostream>
// 链表节点定义
struct ListNode {
int data;
ListNode* next; // 指向下一个节点的指针
ListNode(int val) : data(val), next(nullptr) {} // 构造函数
};
// 添加节点到链表
ListNode* insertNode(ListNode*& head, int val) {
ListNode* newNode = new ListNode(val);
if (head == nullptr) { // 如果链表为空,头结点就是新节点
head = newNode;
} else {
ListNode* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = newNode; // 将新节点添加到最后
}
return head;
}
// 打印链表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << "\n";
}
// 释放链表(递归释放)
void releaseList(ListNode* head) {
if (head != nullptr) {
delete head;
head = nullptr;
// 递归处理剩余节点
releaseList(head->next);
}
}
int main() {
ListNode* head = nullptr;
// 插入数字
for (int i = 1; i <= 8; ++i) {
head = insertNode(head, i);
}
// 打印链表
printList(head);
// 释放链表
releaseList(head);
return 0;
}
```
在这个程序中,我们首先定义了一个`ListNode`结构体,用于表示链表中的每个节点。接着,`insertNode`函数用于向链表中插入新的节点,`printList`用于打印链表的内容,而`releaseList`则递归地删除并释放链表的所有节点。
在`main`函数中,我们将1到8的数字逐个插入链表,然后打印出来,最后调用`releaseList`释放内存。这样就完成了整个操作。运行此代码后,你应该能看到数字12345678依次打印出,然后程序结束没有内存泄漏。