题目
实现一个后进先出(LIFO)栈结构,响应多行指令执行压栈与弹栈操作。
输入格式:多行输入,指令以空格分隔:1 x 表示将 x 压栈;0 表示弹栈并输出;-1 表示指令序列结束。
输出格式:对每次弹栈操作,分行输出弹出的元素值;若栈空则输出 empty。
数据范围与约定:操作总数不超过 1000。
思路与算法
1. 栈特性 LIFO
后进先出,在同一端(栈顶)执行插入与删除。
2. 列表模拟
Python 列表的 append() 和 pop() 天生就是标准的高效栈操作。
完整程序
import sys
# 列表实现后进先出栈
st = []
lines = sys.stdin.read().split()
if not lines:
exit(0)
idx = 0
while idx < len(lines):
op = int(lines[idx])
idx += 1
if op == -1:
break
if op == 1:
# 压栈操作
val = int(lines[idx])
idx += 1
st.append(val)
elif op == 0:
# 弹栈操作
if st:
print(st.pop())
else:
print('empty')运行示例
输入:
1 5
1 3
0
-1输出:
3