(3)设从键盘输入一整数的序列:a1, a2,a3,… an,试编写算法实现:用栈结构存储输人的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。
时间: 2024-12-29 09:33:58 浏览: 11
这是一个基于栈数据结构的问题,可以使用Python语言来实现这个算法。以下是算法的步骤:
```python
def process_sequence():
stack = []
try:
n = int(input("请输入整数序列的长度n,或直接输入-1结束:"))
# 如果输入非负整数,继续循环
for i in range(n):
ai = int(input(f"请输入第{i+1}个整数ai:"))
if ai != -1:
# 当输入不等于-1时,入栈
stack.append(ai)
# 检查栈是否已满
if len(stack) == max_size: # 假设最大容量为max_size
print(f"栈已满,无法再入栈,当前栈顶元素为{stack[-1]}")
else:
# 当输入等于-1时,弹出并打印栈顶元素
if not stack.isEmpty(): # 确保栈非空
print(f"栈顶元素为:{stack.pop()}")
else:
print("栈为空,无法出栈")
except ValueError:
print("输入错误,请输入整数序列。")
# 假设我们有一个虚构的栈类,这里简化处理
class Stack:
def __init__(self, max_size):
self.max_size = max_size
self.data = []
def isEmpty(self):
return len(self.data) == 0
def push(self, value):
if len(self.data) < self.max_size:
self.data.append(value)
else:
raise OverflowError("栈已满")
def pop(self):
if not self.isEmpty():
return self.data.pop()
else:
raise IndexError("栈为空")
process_sequence()
```
在这个算法中,我们首先初始化一个栈,并请求用户输入序列长度或直接提供-1结束输入。对于每个输入值,如果它不是-1,我们就将其压入栈;如果是-1,就检查栈是否为空,如果不为空则弹出栈顶元素。同时,我们还包含了一些异常处理机制,如输入值不是整数、栈满等情况。
阅读全文