这些输出流可能吗?
Are these output streams possible?
我正在做一道练习题
一个
问题 一台栈机的输入流为ABCD。 CDBA 的输出流是否可能?对于 CDAB?显示创建这些流的操作顺序,或者如果不可能,请解释为什么不可能。
我说过两种输出流都是可能的。
对于 CDBA,这是我创建这样一个流的操作顺序
- 推A
- 推 B
- 推 C
- 流行C/Store
- 推D
对于 CDAB
- 推 A
- 弹出 A/store
- 推 B
- 推 A
- 推 C
- 弹出 C / 商店
- 推 D
- 推 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。
因此无法形成第二个输出流。
我正在做一道练习题
一个 问题 一台栈机的输入流为ABCD。 CDBA 的输出流是否可能?对于 CDAB?显示创建这些流的操作顺序,或者如果不可能,请解释为什么不可能。
我说过两种输出流都是可能的。
对于 CDBA,这是我创建这样一个流的操作顺序
- 推A
- 推 B
- 推 C
- 流行C/Store
- 推D
对于 CDAB
- 推 A
- 弹出 A/store
- 推 B
- 推 A
- 推 C
- 弹出 C / 商店
- 推 D
- 推 C
我假设堆栈机器的工作方式就像堆栈一样-push pop。大家同意我的两个操作顺序吗? "stack machine" 中是否有某些 属性 使得这些流无法 create/produce?
向上,一切看起来都很好,除了你需要在 CDBA 结束时再次按下 C。
如果有人仍然好奇,我几天前重新讨论了这个问题。
基本上,您通过 push 将输入输入堆栈机器并通过 pop 输出(两个主要操作)
看看我们的第一个输入流 ABCD,这里是生成输出流 CDBA 的操作序列
这样就形成了一个CDBA的输出流
然而,要生成 CDAB 的输出流,生成 CDBA 的前 6 个操作将适用于获得 CD 的输出流。然而,在这 6 个操作之后,你只剩下(从上到下)['B','A'] 这意味着只使用 push 和 pop,无法在 B 之前输出 A。 因此无法形成第二个输出流。