用你所熟悉的程序设计语言编程: 1、输入一批正整数(数据个数未知,以0结束),然后将这些数按由小到大排序输出(用数组存储)。 输人一批正整数(数据个数未知,以0结束),用单链表存储,输出大于平均值的数。
时间: 2024-09-09 09:01:16 浏览: 42
首先,我们来讲解如何用Python实现这两个任务:
1. **输入正整数并排序(数组存储)**:
```python
def sort_integers():
numbers = []
while True:
try:
num = int(input("请输入一个正整数(输入0结束): "))
if num == 0:
break
numbers.append(num)
except ValueError:
print("无效输入,只接受正整数。")
numbers.sort()
print("数字已按从小到大排序:", numbers)
sort_integers()
```
当你运行这个程序时,它会提示你逐次输入正整数,直到你输入0为止,最后输出排序后的列表。
2. **输入正整数并筛选大于平均值的数(单链表存储)**:
由于链表不适合直接存储平均值,我们可以先计算平均值,然后再遍历链表找到符合条件的节点:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
# 添加元素
def append(self, value):
new_node = Node(value)
if not self.head:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
# 输入数据
total_sum = 0
num_of_elements = 0
linked_list = LinkedList()
while True:
try:
num = int(input("请输入一个正整数(输入0结束): "))
if num == 0:
break
linked_list.append(num)
total_sum += num
num_of_elements += 1
except ValueError:
print("无效输入,只接受正整数。")
if num_of_elements > 0:
average = total_sum / num_of_elements
print(f"平均值为: {average}")
# 遍历链表找出大于平均值的数
current = linked_list.head
result_nodes = []
while current:
if current.data > average:
result_nodes.append(current.data)
current = current.next
if result_nodes:
print("大于平均值的数有:", result_nodes)
else:
print("没有输入任何数据。")
```
这两个示例分别展示了数组和链表数据结构处理这个问题的不同方式。
阅读全文