定义f为单链表的头指针,初始化构造函数,链表中存储的是6个整型数据,请用java实现下列运算的递推算法。 1.求链表的结点个数 2.求所有整数的平均值。
时间: 2024-05-02 10:19:20 浏览: 8
1. 求链表的结点个数的递推算法:
```
public int countNodes(ListNode f) {
int count = 0;
ListNode curr = f;
while (curr != null) {
count++;
curr = curr.next;
}
return count;
}
```
2. 求所有整数的平均值的递推算法:
```
public double average(ListNode f) {
int sum = 0;
int count = 0;
ListNode curr = f;
while (curr != null) {
sum += curr.val;
count++;
curr = curr.next;
}
return (double) sum / count;
}
```
笑话:为什么程序员总是看时钟?因为时间是 int,要担心溢出。
相关问题
已知f为单链表的表头指针,链表中存储的是6个整型数据,请用java实现下列运算的递推算法。 1.求链表的结点个数 2.求所有整数的平均值。
1. 求链表的结点个数的递推算法:
```
public int getNodeNum(ListNode head) {
int count = 0;
ListNode p = head;
while (p != null) {
count++;
p = p.next;
}
return count;
}
```
其中,ListNode为链表结点类型。
2. 求所有整数的平均值的递推算法:
```
public double getAverage(ListNode head) {
int sum = 0;
int count = 0;
ListNode p = head;
while (p != null) {
sum += p.val;
count++;
p = p.next;
}
return (double) sum / count;
}
```
其中,val为链表结点中存储的整数值。
已知f为单链表的表头指针, 链表中存储的都是整型数据,试写出实现下列运算的非递归算法: ① 求链表中的最大整数; ② 求链表的结点个数; ③ 求所有整数的平均值。
好的,我明白了。以下是回答:
① 求链表中的最大整数:
算法思路:
1. 取表头元素作为最大值;
2. 从表头的下一个元素开始向后遍历整个链表,若出现比最大值大的元素,则更新最大值;
3. 遍历至链表尾部,最大值即为链表中的最大整数。
算法实现:
```
int getMax(Node* f) {
int maxNum = f->data;
Node* p = f->next;
while (p != NULL) {
if (p->data > maxNum) {
maxNum = p->data;
}
p = p->next;
}
return maxNum;
}
```
② 求链表的结点个数:
算法思路:
1. 初始化结点个数为0;
2. 从表头开始向后遍历整个链表,每遍历到一个结点,将结点个数加1;
3. 遍历至链表尾部,返回结点个数。
算法实现:
```
int getCount(Node* f) {
int count = 0;
Node* p = f;
while (p != NULL) {
count++;
p = p->next;
}
return count;
}
```
③ 求所有整数的平均值:
算法思路:
1. 初始化整数总和为0,结点个数为0;
2. 从表头开始向后遍历整个链表,每遍历到一个结点,将结点中存储的整数值累加到整数总和中,将结点个数加1;
3. 遍历至链表尾部,整数总和除以结点个数即为所有整数的平均值。
算法实现:
```
float getAverage(Node* f) {
int sum = 0, count = 0;
Node* p = f;
while (p != NULL) {
sum += p->data;
count++;
p = p->next;
}
return (float)sum/count;
}
```