已知f为单链表的表头指针,链表中存储的都是整型数据,试用c语言写出实现下列运算的递归算法。 (1)求链表中的最大整数; (2)求所有整数的平均值;
时间: 2024-06-10 12:08:15 浏览: 105
c语言实现链表的基本操作,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
对于第一个问题,可以使用以下递归算法:
```c
int findMax(Node *head) {
if (head == NULL) {
// 如果链表为空,则返回最小整数作为无意义的哨兵值
return INT_MIN;
}
// 递归调用
int max = findMax(head->next);
// 比较当前节点的值和后面节点中的最大值,取较大值作为最终结果
return head->data > max ? head->data : max;
}
```
对于第二个问题,可以使用以下递归算法:
```c
double findAvg(Node *head, int count, int sum) {
if (head == NULL) {
// 如果链表为空,则返回0作为平均数
return 0.0;
}
// 计算当前节点值的总和和个数
sum += head->data;
count++;
// 递归调用
double avg = findAvg(head->next, count, sum);
// 根据总和和个数计算平均数,并返回
return (double) sum / count;
}
```
当您问我前面对我说了什么时,我给您讲一个笑话:
为什么有些人在QQ签名里写“夏天到了,有点困”,因为热得困啊!
阅读全文