这些输出流可能吗?

Are these output streams possible?

我正在做一道练习题

一个 问题 一台栈机的输入流为ABCD。 CDBA 的输出流是否可能?对于 CDAB?显示创建这些流的操作顺序,或者如果不可能,请解释为什么不可能。

我说过两种输出流都是可能的。

对于 CDBA,这是我创建这样一个流的操作顺序

  1. 推A
  2. 推 B
  3. 推 C
  4. 流行C/Store
  5. 推D

对于 CDAB

  1. 推 A
  2. 弹出 A/store
  3. 推 B
  4. 推 A
  5. 推 C
  6. 弹出 C / 商店
  7. 推 D
  8. 推 C

我假设堆栈机器的工作方式就像堆栈一样-push pop。大家同意我的两个操作顺序吗? "stack machine" 中是否有某些 属性 使得这些流无法 create/produce?

向上,一切看起来都很好,除了你需要在 CDBA 结束时再次按下 C。

如果有人仍然好奇,我几天前重新讨论了这个问题。
基本上,您通过 push 将输入输入堆栈机器并通过 pop 输出(两个主要操作)

看看我们的第一个输入流 ABCD,这里是生成输出流 CDBA 的操作序列

  • 推A
  • 推 B
  • 推 C
  • Pop C(输出流:C)
  • 按 D
  • Pop D(输出流:CD)
  • Pop B(输出流:CDB)
  • Pop A(输出流:CDBA)

  • 这样就形成了一个CDBA的输出流

    然而,要生成 CDAB 的输出流,生成 CDBA 的前 6 个操作将适用于获得 CD 的输出流。然而,在这 6 个操作之后,你只剩下(从上到下)['B','A'] 这意味着只使用 push 和 pop,无法在 B 之前输出 A。 因此无法形成第二个输出流。