用C++来完成编写一个能将链表使用递归方法倒叙输出的小程序。创建一个含有n个节点的链表(不包含头结点),n由键盘输入,按照顺序存分别储数字1到n,使用递归的方法倒叙输出。 看看还记不记得"递归"?能否简化链表的操作。 效果如下: 输入: 5 输出: 5 4 3 2 1
时间: 2024-04-17 08:25:53 浏览: 60
当然,我可以帮你编写这个程序。以下是使用递归方法倒序输出链表的C++代码:
```cpp
#include <iostream>
// 定义链表节点结构
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 递归方法倒序输出链表
void reversePrint(ListNode* head) {
if (head == nullptr) {
return;
}
reversePrint(head->next);
std::cout << head->val << std::endl;
}
int main() {
int n;
std::cout << "请输入链表节点个数n:";
std::cin >> n;
// 创建链表
ListNode* dummy = new ListNode(-1);
ListNode* curr = dummy;
for (int i = 1; i <= n; i++) {
curr->next = new ListNode(i);
curr = curr->next;
}
// 倒序输出链表
std::cout << "倒序输出链表:" << std::endl;
reversePrint(dummy->next);
// 释放链表内存
curr = dummy;
while (curr != nullptr) {
ListNode* temp = curr;
curr = curr->next;
delete temp;
}
return 0;
}
```
请注意,该程序创建了一个带有虚拟头节点(dummy)的链表,以简化链表操作。在倒序输出时,我们使用递归方法,先递归到链表末尾,然后从末尾开始依次输出节点值。
希望这个程序对你有所帮助!如果你有任何其他问题,请随时提问。