在Python语言中,利用共享栈实现奇偶数的分类,奇数放入栈1,偶数放入栈2. 输入描述 输入一个整数n代表数组元素个数(n <= 10000); 输入一个非空的具有n个整数的数组; 输出描述 分别输出两个栈中的元素。每一行最后一个元素后面有空格,然后要换行。
时间: 2024-10-28 18:15:45 浏览: 13
为了在Python中实现这个功能,我们可以创建两个独立的栈(stacks),一个用于存储奇数,另一个用于存储偶数。首先,我们需要遍历输入的数组,对每个元素进行检查,然后将其推送到对应的栈中。下面是具体的代码实现:
```python
from collections import deque
def classify_numbers(n, arr):
stack_odd = deque() # 使用双端队列作为栈,方便头部弹出
stack_even = deque()
for num in arr:
if num % 2 == 0: # 如果数字是偶数
stack_even.append(num)
else: # 否则数字是奇数
stack_odd.append(num)
# 输出栈中的元素
output_odd = [] # 存储奇数栈的输出结果
output_even = [] # 存储偶数栈的输出结果
while stack_odd:
output_odd.append(stack_odd.popleft()) # 双端队列从左端开始弹出
print(output_odd[-1], end=' ') # 每个元素后跟空格
if output_odd: # 非空栈才换行
print()
print("\n") # 奇数栈结束后换行
while stack_even:
output_even.append(stack_even.popleft())
print(output_even[-1], end=' ')
if output_even: # 非空栈才换行
print()
# 返回结果
return output_odd, output_even
# 示例输入
n = int(input("请输入数组元素个数: "))
arr = list(map(int, input(f"请输入长度为{n}的整数数组: ").split()))
output_odd, output_even = classify_numbers(n, arr)
print("奇数栈:")
for result in output_odd:
print(result)
print("\n偶数栈:")
for result in output_even:
print(result)
```
这段代码首先定义了两个双端队列`stack_odd`和`stack_even`,接着遍历数组,将元素按奇偶性推入对应栈中。最后通过循环依次从栈顶弹出元素,并按要求输出。每行结束时会添加空格并换行,直到两个栈都为空。
阅读全文