求单循环链表中所有结点的最大值、最小值以及平均值。
时间: 2024-05-07 13:15:19 浏览: 42
这里假设单循环链表中存储的是整数。
1. 最大值:从任意一个结点开始遍历整个链表,记录下当前找到的最大值,最终返回该值即可。
2. 最小值:同理,从任意一个结点开始遍历整个链表,记录下当前找到的最小值,最终返回该值即可。
3. 平均值:先遍历整个链表,统计结点数和所有结点值的总和,然后用总和除以结点数即可得到平均值。
以下是代码实现:
```python
class Node:
def __init__(self, value):
self.value = value
self.next = None
class CircularLinkedList:
def __init__(self):
self.head = None
self.tail = None
def append(self, value):
node = Node(value)
if not self.head:
self.head = node
self.tail = node
else:
self.tail.next = node
self.tail = node
self.tail.next = self.head
def max_value(self):
if not self.head:
return None
max_value = self.head.value
node = self.head.next
while node != self.head:
if node.value > max_value:
max_value = node.value
node = node.next
return max_value
def min_value(self):
if not self.head:
return None
min_value = self.head.value
node = self.head.next
while node != self.head:
if node.value < min_value:
min_value = node.value
node = node.next
return min_value
def average_value(self):
if not self.head:
return None
node = self.head
count = 1
total = self.head.value
node = node.next
while node != self.head:
count += 1
total += node.value
node = node.next
return total / count
```