. 设从键盘输入一个整数序列:a1,a2,a3,……an。编写算法用栈结构 存储输入的整数,当 ai≠-1 时,将 ai 进栈。当 ai=-1 时,输出栈顶整数并 出栈。算法应对异常情况(入栈满等)给出相应的信息
时间: 2024-10-20 16:13:05 浏览: 111
在编程中,我们可以使用栈数据结构来解决这个问题。栈是一种只能在一端进行插入和删除的线性表,遵循“后进先出”(LIFO,Last In First Out)的原则。以下是使用Python描述该算法的一个示例:
```python
def process_sequence():
stack = [] # 初始化空栈
try:
for i in range(int(input("请输入整数序列长度 (n):"))):
ai = int(input(f"请输入第{i+1}个整数 a{ i + 1 } (如果想结束输入请输入 -1): "))
if ai != -1:
# 当ai不等于-1时,将元素入栈
if len(stack) < MAX_SIZE: # 确保栈未满
stack.append(ai)
else:
print(f"错误!栈已满,无法继续添加 a{ i + 1 }")
elif ai == -1 and stack: # 如果ai等于-1并且栈非空,弹出栈顶元素并打印
print("栈顶整数:", stack.pop())
else:
print("已到达序列结束")
except ValueError:
print("输入无效,请输入整数序列.")
except Exception as e:
print(f"发生错误:{str(e)}")
# 可选:设置栈的最大容量
MAX_SIZE = 100 # 根据需求调整
process_sequence()
```
在这个算法中,我们首先初始化一个栈,然后遍历用户输入的整数序列。如果遇到 `-1`,我们就检查栈是否为空。如果不为空,就弹出栈顶元素;如果栈满了,则显示错误消息。在整个过程中,我们处理了可能出现的 `ValueError` 异常以及其他的未知异常。
阅读全文