C语言(10)已知f为单链表的表头指针,链表中存储的都是整型数据,试写出实现下列运算的非递归算法 ①求链表中的最大整数;②求链表的结点个数;③求所有整数的平均值。
时间: 2023-06-02 17:07:34 浏览: 254
已知head为单链表的表头指针,链表中存储的都是整形数据,实现下列运算的递归算法
4星 · 用户满意度95%
很高兴为您解答问题!以下是针对您的问题的答案:
1. 求链表中的最大整数的非递归算法实现方式如下:
int getMax(ListNode* head) {
if (!head) {
return -1;
}
int maxVal = head->val;
ListNode* cur = head->next;
while (cur) {
if (cur->val > maxVal) {
maxVal = cur->val;
}
cur = cur->next;
}
return maxVal;
}
2. 求链表的结点个数的非递归算法实现方式如下:
int countNodes(ListNode* head) {
int count = 0;
ListNode* cur = head;
while (cur) {
count++;
cur = cur->next;
}
return count;
}
3. 求所有整数的平均值的非递归算法实现方式如下:
float getAvg(ListNode* head) {
if (!head) {
return -1;
}
float sum = 0;
int count = 0;
ListNode* cur = head;
while (cur) {
sum += cur->val;
count++;
cur = cur->next;
}
return sum/count;
}
希望这些答案能够帮助您解决问题!
阅读全文