中缀到postfix转换器输出问题

时间:2015-04-15 07:04:57

标签: java infix-notation shunting-yard

我正在尝试将一个中缀转换为postfix转换器但是我输出时遇到了一些问题,即带括号。当我尝试用括号传递任何东西时,请说:

(1*2*3^1)

我收到NoSuchElementException。谁知道什么是错的?

一些注意事项:我正在传递令牌化字符串的deque作为中缀(所以我只限于deque方法)并返回后缀的String deque。任何帮助表示赞赏。

这是我的方法:

private static Deque<String>shuntingYard(Deque<String> infixQ){
  Deque<String> opS = new LinkedList<String>();
  Deque<String> outputQ = new LinkedList<String>();
  String token;
  while(!infixQ.isEmpty()){
     token = infixQ.removeFirst();
     if(isNumeric(token) || isAlpha(token)){
        outputQ.addLast(token);
     }
     if(token.equals("(")){
        opS.addFirst(token);
     }
     if(token.equals(")")){
        opS.addFirst(token);
        while(!outputQ.peekFirst().equals("(")){
              outputQ.addLast(opS.removeFirst());
        }
        opS.removeFirst();
     }

     if(isOperator(token)){
         while(!opS.isEmpty() && !(opS.peekFirst().equals("(") && prec(token) <= prec(opS.peekFirst()))){ 
           outputQ.addLast(opS.removeFirst());
        }
        opS.addFirst(token);
     }       
   }
   while(!opS.isEmpty()){
     outputQ.addLast(opS.removeFirst());
   }
   return outputQ;
}  

0 个答案:

没有答案