📜  门| GATE CS 2010 |问题24(1)

📅  最后修改于: 2023-12-03 15:42:11.371000             🧑  作者: Mango

门 | GATE CS 2010 | 问题 24

这是一道关于计算机科学的问题,以下是题目描述和解答方法。

题目描述

有一个某种数据结构 S,支持两个操作:

  • push(x):将整数 x 存储在 S 中。
  • pop():从 S 中删除并返回最后一个插入的元素。

给定一个初始为空的 S,现在执行了以下若干个操作,使用某个元素 x 则表示插入了 x

push(5)
push(3)
push(8)
pop()
push(2)
pop()
pop()
push(9)
push(1)
pop()
push(7)
pop()

那么,在以上操作之后,S 中留下了哪些元素?

请将留下的元素按插入的顺序依次输出。

解答

考虑观察执行过程中发生了什么。

一开始 S 为空,接着插入了数字 5,然后是 3,接着是 8。此时 S 中有三个元素,从最后一个插入的顺序分别为 8, 3, 5。

接下来执行了一次 pop(),将最后插入的元素 8 删除,并返回。此时 S 中还剩下 3 和 5。

然后插入了一个 2,接着再执行 pop() 操作,将最后插入的元素 2 删除并返回。此时 S 中还有 3 和 5。

再执行一次 pop(),将最后插入的元素 5 删除并返回。此时 S 中只剩下 3。

然后插入 9,再插入 1,然后执行 pop() 操作,将最后插入的元素 1 删除并返回。此时 S 中还剩下 3 和 9。

最后一步是插入 7,接着执行 pop(),将最后插入的元素 7 删除并返回。此时 S 中只剩下 3 和 9。

由此可见,经过以上操作之后,S 中留下的元素按插入的顺序依次为 3, 9。

下面是相应操作的代码片段:

s = []

s.append(5)
s.append(3)
s.append(8)
s.pop()
s.append(2)
s.pop()
s.pop()
s.append(9)
s.append(1)
s.pop()
s.append(7)
s.pop()

print(s)  # 输出 [3, 9]

注意,在 Python 中使用列表即可实现此数据结构。