给定一个带头节点的单链表设计算法,按递增次序输出单列表中各节点的数据元素,并释放节点所占的存储空间,要求不使用数组作为辅助空间。用 C++ 写出代码
时间: 2024-10-28 12:09:19 浏览: 16
西南交通大学-zhy-数据结构第4次作业.docx
5星 · 资源好评率100%
在C++中,我们可以使用迭代的方式来遍历单链表并逐个打印节点值,同时在打印过程中释放每个节点,因为链表结构本身就是线性的,不需要额外的数组作为辅助空间。这里是一个简单的示例:
```cpp
#include <iostream>
// 定义链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
void printAndFreeList(ListNode* head) {
// 如果链表为空,则直接返回
if (head == nullptr) {
return;
}
std::cout << "Value: " << head->val << "\n"; // 打印节点值
// 释放当前节点
delete head;
// 递归处理下一个节点,直到链表结束
printAndFreeList(head->next);
}
int main() {
// 创建一个示例链表
ListNode* list = new ListNode(5);
list->next = new ListNode(3);
list->next->next = new ListNode(8);
list->next->next->next = new ListNode(1);
// 输出并释放链表节点
printAndFreeList(list);
return 0;
}
```
在这个例子中,`printAndFreeList`函数通过递归实现了对链表的遍历和节点的释放。每次打印完节点后,就删除该节点,并继续处理下一个节点,直到链表空。
阅读全文