【问题标题】:push and pop of integers to stack, what outcome is not possible将整数推送和弹出到堆栈,什么结果是不可能的
【发布时间】:2017-12-29 06:55:50
【问题描述】:

我正在尝试学习算法的在线课程,但我似乎无法理解它是如何工作的。 (这不是家庭作业,只是免费在线课程中的一个问题)

谁能向我解释如何找到答案?在练习结束时给出,但我不明白它是如何工作的。提前致谢 ! :)

假设执行(堆栈)推入和弹出操作的混合序列。 push 按顺序推动整数 0 到 9; pops 打印出返回值。下列哪个序列不能发生? (a) 4 3 2 1 0 9 8 7 6 5

(b) 4 6 8 7 5 3 2 9 0 1

(c) 2 5 6 7 4 8 9 3 1 0

(d) 4 3 2 1 0 5 6 7 8 9

(e) 1 2 3 4 5 6 9 8 7 0

(f) 0 4 6 5 3 8 1 7 2 9

(g) 1 4 7 9 8 6 5 3 0 2

(h) 2 1 4 3 6 5 8 7 9 0

正确答案:(b)、(f) 和 (g)。

【问题讨论】:

  • 我投票结束这个问题,因为它不是一个编程问题。
  • 在任何时候,你只能做 2 件事中的 1 件,其中 1 件会打印一些东西,所以很明显你应该在任何给定步骤做些什么来最终得到所需的输出。
  • 我不同意。这是一个编程理论问题,因为它要求个人理解一个重要的数据结构;堆栈或 LIFO。
  • @DavidHoelzer 一个直接试图了解堆栈如何工作的问题可能很好,但这个问题更多的是关于简单逻辑而不是堆栈如何工作(即使该逻辑需要了解堆栈)。

标签: java algorithm assembly data-structures stack


【解决方案1】:

如果按顺序推送数字,即使弹出随机发生,某些事情也永远不会发生。考虑(b):

按 0、1、2、3、4、弹出 4、按 5、6、弹出 6、按 7、按 8、弹出 8、弹出 7、弹出 5、弹出 3、弹出 2、按 9、弹出9....你不能弹出 0,因为那个挡住了。

其他错误答案也是如此。

【讨论】:

  • 谢谢。我必须做的就是简单地用一支笔和一张纸写下这个过程。现在很有意义,一旦你理解它就很容易了。再次感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
相关资源
最近更新 更多