用递归正向输出单链表中的每个结点元素值,不带头结点
时间: 2024-01-22 17:20:06 浏览: 23
递归正向输出单链表中的每个结点元素值,可以分为两步:
1. 输出当前结点的元素值;
2. 递归输出下一个结点的元素值。
具体的实现可以参考下面的递归函数:
```c++
void printList(ListNode* p) {
if (p == nullptr) { // 递归结束条件:结点为空
return;
}
cout << p->val << " "; // 输出当前结点的元素值
printList(p->next); // 递归输出下一个结点的元素值
}
```
其中,`ListNode` 是单链表结点的定义,包含一个整型元素值 `val` 和一个指向下一个结点的指针 `next`。注意,这个递归函数不需要头结点,因为它是从第一个结点开始递归输出的。如果链表为空,则函数直接返回,不进行任何操作。
相关问题
用递归正向输出单链表中的每个节点元素值。(提示:不带头结点)
可以使用递归函数来遍历单链表,每次递归输出当前节点的值,并递归调用函数输出下一个节点的值。
以下是一个示例代码:
```c++
void printList(ListNode* node) {
if (node == nullptr) {
return;
}
cout << node->val << " ";
printList(node->next);
}
```
其中,ListNode 是单链表节点的定义,val 表示节点的值,next 指向下一个节点的指针。
在主函数中,可以调用这个函数输出单链表的所有节点值:
```c++
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
printList(head); // 输出 1 2 3
```
这样,就可以用递归正向输出单链表中的每个节点元素值了。
用递归反向输出单链表中的每个节点元素值。(提示:不带头结点)
谢谢您的提问!以下是递归反向输出单链表中的每个节点元素值的代码:
```c++
#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 << " ";
}
int main() {
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
head->next->next->next = new ListNode(4);
head->next->next->next->next = new ListNode(5);
std::cout << "Reverse Print of the Linked List: ";
reversePrint(head);
std::cout << std::endl;
return 0;
}
```
程序输出的结果应该是:
```
Reverse Print of the Linked List: 5 4 3 2 1
```
希望能够帮助到您!