【问题标题】:Evaluating Prefix operations using a Queue in C使用 C 中的队列评估前缀操作
【发布时间】:2017-03-21 04:36:36
【问题描述】:

我在玩前缀评估的问题,我想只使用一个队列来评估它们。这是我的伪代码

while Q has more than 1 element
   if the pattern operand, number, number occurs
         op=dequeue(Q)
         num1=dequeue(Q)
         num2=dequeue(Q)
         eval=evaluate(op,num1,num2)
         enqueue(Q,eval)
   else
         elem=dequeue(Q)
         enqueue(Q,elem)

我认为我的逻辑对于格式正确的前缀操作是正确的,但我不确定如何解释无效的前缀语法,例如 10+4。

现在,我的算法会将 10 出列,然后在最后将其入队,这将成为正确的前缀并被评估,但我不希望它这样做。是否有一些前提条件来确保语法正确?

【问题讨论】:

    标签: c algorithm queue prefix


    【解决方案1】:

    如果你有一个函数来弹出队列的第一个元素而不使它出队,你可以在你的 else 路径中使用它一段时间(第一个元素不是操作数)来使无效元素出队。这至少可以保证队列中的第一项是操作数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 2018-03-12
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多