给定一个初始为空的栈和一系列进栈、出栈操作,请编写程序输出经过这些操作后栈的元素。栈的元素值均为整数。 输入格式: 输入第1行为1个正整数n,表示操作个数; 第2行为给出的n个整数,非0元素表示进栈,此非0元素即为进栈元素,0元素表示出栈。 保证栈中元素个数不超过10个。 输出格式: 第一行按出栈顺序输出所有出栈元素,以一个空格隔开;如果栈满时做进栈操作会输出"FULL”,如果栈空时做出栈操作会输出"EMPTY"; 第二行中输出栈中所有元素,以一个空格隔开。 末尾均有一个空格。 输入样例: 12 3 1 2 0 0 -1 0 0 0 4 5 0 输出样例: 2 1 -1 3 EMPTY 5 4
时间: 2024-02-22 07:56:07 浏览: 97
进栈操作-数据结构 栈和队列
下面是本题的 Python3 代码实现:
```python
n = int(input())
stack = []
out = []
for i in range(n):
op = int(input())
if op != 0:
if len(stack) >= 10:
print("FULL")
break
stack.append(op)
else:
if len(stack) == 0:
print("EMPTY")
break
out.append(stack.pop())
for x in out:
print(x, end=' ')
if len(out) == 0:
print('EMPTY', end=' ')
print()
for i in range(len(stack)-1, -1, -1):
print(stack[i], end=' ')
if len(stack) == 0:
print('EMPTY', end=' ')
```
思路解析:
本题需要用栈来模拟进栈、出栈操作,同时需要输出栈中元素和出栈序列。
首先读入操作总数 n,然后采用一个列表 stack 来模拟栈。对于每个操作,如果是进栈操作,我们将元素添加到栈顶,如果此时栈已经满了,我们需要输出 FULL 并且直接退出程序。如果是出栈操作,我们需要将栈顶元素弹出,并且将其添加到一个列表 out 中。如果此时栈已经为空,我们需要输出 EMPTY 并且直接退出程序。
接下来需要按照题目要求输出结果。首先需要输出出栈序列,如果 out 列表为空,说明没有进行过出栈操作,此时需要输出 EMPTY。然后需要输出栈中元素,如果栈为空,同样需要输出 EMPTY。
阅读全文