求单循环链表中所有结点的最大值、最小值以及平均值。
时间: 2024-05-21 11:11:31 浏览: 67
由于单循环链表的特性是最后一个结点的指针指向第一个结点,因此可以从任意一个结点开始遍历整个链表,直到回到起点。
假设单循环链表的结点类型为Node,其中有一个成员变量value表示结点的值,head表示链表的头结点。
求最大值:
首先将最大值初始化为第一个结点的值,然后从第二个结点开始遍历整个链表,每次将当前结点的值与最大值比较,如果大于最大值,则更新最大值。最终得到的最大值即为单循环链表中所有结点的最大值。
int max = head.value;
Node p = head.next;
while (p != head) {
if (p.value > max) {
max = p.value;
}
p = p.next;
}
求最小值:
与求最大值类似,将最小值初始化为第一个结点的值,然后从第二个结点开始遍历整个链表,每次将当前结点的值与最小值比较,如果小于最小值,则更新最小值。最终得到的最小值即为单循环链表中所有结点的最小值。
int min = head.value;
Node p = head.next;
while (p != head) {
if (p.value < min) {
min = p.value;
}
p = p.next;
}
求平均值:
首先需要遍历整个链表,统计链表中结点的个数count以及所有结点的值的总和sum,然后计算平均值为sum/count。
int count = 1;
int sum = head.value;
Node p = head.next;
while (p != head) {
count++;
sum += p.value;
p = p.next;
}
double average = (double)sum / count;
阅读全文