使用C中的队列评估前缀操作

时间:2017-03-21 04:36:36

标签: c algorithm queue prefix

我正在处理前缀评估的问题,我想仅使用队列来评估它们。这是我的伪代码

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出列,然后在最后将它排入队列,这将成为正确的前缀并进行评估,但我不希望它。是否有一些先决条件来确保语法正确?

1 个答案:

答案 0 :(得分:0)

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