这些输出流是否可能?

时间:2015-05-12 00:52:20

标签: lc3

我正在研究练习考试问题

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

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

对于CDBA,以下是我创建此类流的操作序列

         
  1. 推A
  2.      
  3. 推B
  4.      
  5. 推C
  6.      
  7. pop C / Store
  8.      
  9. 推D.

对于CDAB

        
  1. 推A
  2.     
  3. pop A / store
  4.     
  5. 推B
  6.     
  7. 推A
  8.     
  9. 推C
  10.     
  11. pop C / store
  12.     
  13. 推D
  14.     
  15. 推C
  16. 我认为堆栈机就像堆栈一样工作 - 推送pop。大家都同意我的两个操作顺序吗?是否存在“堆栈机器”的某些属性,使这些流无法创建/生成?

2 个答案:

答案 0 :(得分:1)

是的,除了你需要在CDBA结束时再次推送C外,一切看起来都不错。

答案 1 :(得分:0)

如果有人还好奇,我会在几天前重新审视这个问题。
基本上你通过pop(两个主要操作)

通过push和output输入堆栈机器

所以看看我们的第一个输入流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. 因此,无法形成第二个输出流。