题目

实现一个后进先出(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