已知f为单链表的表头指针,链表中存储的都是整型数据,试写出实现下列运算的算法:\n①求链表中的最大整数\n②求链表的结点个数\n③求所有整数的平均值
时间: 2023-05-31 13:20:17 浏览: 202
### 回答1:
1. 最大整数:在单链表的表头指针所指向的节点中,保存着整个单链表中的最大整数值。
2. 表的结点个数:遍历一遍单链表,计算节点的个数即为链表的结点个数。
3. 求所有整数的平均值:遍历一遍单链表,累加所有整数的值,然后除以节点个数得到整个单链表中所有整数的平均值。
### 回答2:
①求链表中的最大整数
定义一个变量max_num初始值为链表中第一个结点的值,然后遍历整个链表,每遇到一个新的结点,就和max_num比较大小,如果比max_num大,则将max_num的值更新为该结点的值。继续遍历直到遍历完整个链表,返回max_num即为链表中的最大整数。
算法如下:
```python
def find_max(f):
# 如果链表为空,则返回None
if not f:
return None
max_num = f.val # 将max_num初始值赋为第一个结点的值
cur_node = f # 从第一个结点开始遍历
while cur_node:
if cur_node.val > max_num:
max_num = cur_node.val
cur_node = cur_node.next
return max_num
```
②求链表的结点个数
定义一个变量count初始值为0,然后遍历整个链表,每遇到一个结点,就将count加1,直到遍历完整个链表,返回count即为链表的结点个数。
算法如下:
```python
def count_node(f):
count = 0 # 将count初始值赋为0
cur_node = f # 从第一个结点开始遍历
while cur_node:
count += 1
cur_node = cur_node.next
return count
```
③求所有整数的平均值
定义一个变量sum初始值为0,然后遍历整个链表,每遇到一个结点,就将该结点的值加到sum上,直到遍历完整个链表,最后用链表的结点个数除以sum即可得到所有整数的平均值。
算法如下:
```python
def avg_num(f):
count = 0 # 将count初始值赋为0
sum = 0 # 将sum初始值赋为0
cur_node = f # 从第一个结点开始遍历
while cur_node:
count += 1
sum += cur_node.val
cur_node = cur_node.next
if count == 0: # 如果链表为空,则返回None
return None
else:
return sum/count
```
### 回答3:
1、求链表中的最大整数
遍历整个链表,记录下最大值,然后将其依次与链表中其他的元素进行比较,最终得到整个链表的最大整数。
具体实现代码如下:
int findMax(Node* f) {
Node* p = f;
int maxNum = p->data;
while(p != NULL) {
if(maxNum < p->data) {
maxNum = p->data;
}
p = p->next;
}
return maxNum;
}
2、求链表的结点个数
遍历整个链表,用计数器计算链表中的结点个数。
具体实现代码如下:
int countNode(Node* f) {
Node* p = f;
int count = 0;
while(p != NULL) {
count++;
p = p->next;
}
return count;
}
3、求所有整数的平均值
遍历整个链表,累加所有整数,最终除以结点个数得到平均值。
具体实现代码如下:
float average(Node* f) {
Node* p = f;
int sum = 0;
int count = 0;
while(p != NULL) {
count++;
sum += p->data;
p = p->next;
}
float ave = (float)sum / count;
return ave;
}
以上就是求单链表中最大整数、结点个数、所有整数的平均值的算法过程,希望对大家有所帮助。