已知f为单向链表的表头指针,链表中存储的都是整型数据,试写出实现下列运算的递归算法: 1、求链表中的最大整数; 2、求链表的结点个数; 3、求所有整数的平均值。
时间: 2023-06-03 19:02:03 浏览: 666
递归求链表中最大值、平均值、节点数
好的,我会根据你的要求进行回答。以下是对应的递归算法:
1、求链表中的最大整数:
```
int maxInList(Node* f) {
if (f == nullptr) {
return INT_MIN;
}
int currMax = maxInList(f->next);
return f->val > currMax ? f->val : currMax;
}
```
2、求链表的结点个数:
```
int countNodes(Node* f) {
if (f == nullptr) {
return 0;
}
return countNodes(f->next) + 1;
}
```
3、求所有整数的平均值:
```
double avgValue(Node* f, int count) {
if (f == nullptr) {
return 0;
}
return (f->val + avgValue(f->next, count+1)*(count/((double)count+1)));
}
```
以上是对应的递归算法,希望能够对你有所帮助。
阅读全文