可以仅使用队列将中缀表示法的字符串转换为前缀表示法吗? (考虑唯一的操作是 + 和 - 的情况)

Posted

技术标签:

【中文标题】可以仅使用队列将中缀表示法的字符串转换为前缀表示法吗? (考虑唯一的操作是 + 和 - 的情况)【英文标题】:Can a string in infix notation be converted to prefix notation using only queues ? (consider the case where the only operations are + and -) 【发布时间】:2011-10-23 15:57:31 【问题描述】:
public class Convert 
/* the algorithm works as follows after inserting all elements of infix string 
into an empty Queue iterate over queue for infix.length() number of times and 
check if element at front of queue is an operator if yes enque the element to 
back of the queue else deque the operand and concatenate it with the empty 
prefix string here is an example then finally deque the queue elements with 
the prefix string*/                  

    public static String Pre(String in)
        int i = 0;
        Queue Q = new Queue(in.length());     //assuming a Queue of characters
        while(i<in.length())
            Q.enque(in.charAt(i));       
        
        i = in.length()-1;
        String pre = "";
        while(i>=0)                         //move operators to end of queue
            if(Q.peek()=='+'||'-')           //if character is oper enque at end 
                Q.enque(Q.deque);
            else
                pre  = pre + Q.deque;
                        // concatenate operands with prefix 
        
        while(!Q.isEmpty)                         //concatenate the operators 
            pre = Q.deque + pre;
        
        return pre;                               // end of method
    

【问题讨论】:

我不太明白您给定的代码应该如何补充您的问题。 【参考方案1】:

“Post”Production System 仅使用队列。它具有与图灵机相当的功能。

【讨论】:

【参考方案2】:

鉴于您指定的语法非常有限,在我看来,您可以使用双端队列将中缀转换为前缀。如果语法更复杂,我怀疑这种方法是否可行。

【讨论】:

对不起,我不是很清楚,我假设字符串没有括起来,唯一的操作是 + 和 - 这是一个正常的队列,我从前面排队并从后面排队跨度>

以上是关于可以仅使用队列将中缀表示法的字符串转换为前缀表示法吗? (考虑唯一的操作是 + 和 - 的情况)的主要内容,如果未能解决你的问题,请参考以下文章

第03次作业-栈和队列

在 JavaScript 中将中缀转换为前缀表示法

在 Python 中为中缀表示法添加前缀表示法

7-20 表达式转换

5-20 表达式转换 (25分)

7-1 表达式转换 (25 分)