已知一个双向堆栈stack,编写程序实现:从键盘输入一个数据,若输入的是奇数,则存入左栈;若输入的是偶数,则存入右栈,直到栈满为止。
时间: 2024-03-14 21:47:11 浏览: 126
好的,我可以帮您编写这个程序。以下是 Python 语言的代码实现:
```python
class DoubleStack:
def __init__(self, size):
self.size = size
self.left_stack = []
self.right_stack = []
def push_left(self, data):
if len(self.left_stack) < self.size:
self.left_stack.append(data)
print(f"已将 {data} 存入左栈")
else:
print("左栈已满")
def push_right(self, data):
if len(self.right_stack) < self.size:
self.right_stack.append(data)
print(f"已将 {data} 存入右栈")
else:
print("右栈已满")
def is_odd(self, data):
return data % 2 != 0
def push_to_stack(self):
while True:
data = int(input("请输入数据:"))
if self.is_odd(data):
self.push_left(data)
else:
self.push_right(data)
if len(self.left_stack) == self.size and len(self.right_stack) == self.size:
print("栈已满")
break
```
这个程序定义了一个 `DoubleStack` 类,包含左栈和右栈,以及左栈和右栈的入栈操作 `push_left` 和 `push_right`,判断输入数据是否为奇数的方法 `is_odd`,以及一个从键盘输入数据并将其存入左栈或右栈的方法 `push_to_stack`。在 `push_to_stack` 方法中,当左栈和右栈均已满时,程序会退出循环并输出提示信息。您可以根据需要调整栈的大小,例如:
```python
stack = DoubleStack(5) # 创建一个大小为 5 的双向栈
stack.push_to_stack() # 开始输入数据并存入左栈或右栈
```
希望这个程序能够帮到您!
阅读全文