用递归思想创建单链表并返回其中的最大值,用c++实现
时间: 2024-02-24 17:57:38 浏览: 81
好的,这是一个递归的单链表创建和查找最大值的示例代码:
```c++
#include<iostream>
using namespace std;
struct ListNode{
int val;
ListNode* next;
ListNode(int x): val(x), next(NULL) {}
};
ListNode* createList(){
int val;
cin >> val; // 输入当前节点的值
if(val == -1){
return NULL; // 输入-1表示链表结束
}
ListNode* node = new ListNode(val);
node->next = createList(); // 递归创建下一个节点
return node;
}
int findMax(ListNode* head){
if(head == NULL){
return INT_MIN; // 如果链表为空,则返回最小整数
}
return max(head->val, findMax(head->next)); // 递归查找下一个节点
}
int main(){
cout << "请输入链表节点的值,以-1结束:" << endl;
ListNode* head = createList();
int maxVal = findMax(head);
cout << "链表中的最大值为:" << maxVal << endl;
return 0;
}
```
这个程序会先让用户输入链表的节点值,以-1结束输入。然后使用递归的方法创建单链表,并返回链表中的最大值。注意在创建链表时,输入-1时需要返回NULL。在查找最大值时,如果链表为空,则返回最小整数INT_MIN。
阅读全文