本关任务:已知f为单链表的表头指针, 链表中存储的都是整型数据,试写出实现下列运算的递归算法: ① 求链表中的最大整数; ② 求链表的结点个数; ③ 求所有整数的平均值。 相关知识 为了完成本关任务,你需要掌握:递归的相关知识。 编程要求 根据提示,在右侧编辑器补充代码 用户输入相应的数字代表相应的操作 1.初始化 2.插入链表,当用户输入数字2时,还需要输入链表的长度 3.获取链表中的最大整数 4.获取链表节点个数 5.所有整数的平均值 0.退出 测试说明 平台会对你编写的代码进
时间: 2024-03-26 19:35:28 浏览: 94
为了完成本任务,我将分别给出三个函数的递归实现。
求链表中的最大整数:
```
int getMax(Node* head) {
if (head == NULL) {
return INT_MIN;
}
int maxVal = getMax(head->next);
return max(head->data, maxVal);
}
```
求链表的结点个数:
```
int getCount(Node* head) {
if (head == NULL) {
return 0;
}
return 1 + getCount(head->next);
}
```
求所有整数的平均值:
```
double getAverage(Node* head, int count) {
if (head == NULL) {
return 0;
}
return ((head->data + getAverage(head->next, count - 1) * (count - 1)) / count);
}
```
在主函数中,你可以按照题目要求,使用以下代码来调用这三个函数:
```
switch (input) {
case 1:
head = init();
break;
case 2:
int len;
cin >> len;
head = insert(len);
break;
case 3:
int maxVal = getMax(head);
cout << maxVal << endl;
break;
case 4:
int count = getCount(head);
cout << count << endl;
break;
case 5:
count = getCount(head);
double avg = getAverage(head, count);
cout << avg << endl;
break;
case 0:
return 0;
}
```
阅读全文