mkaplan

Untitled

Jun 20th, 2011
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.04 KB | None | 0 0
  1. public ArrayList<expressionElement> convertToPostfix(ArrayList<expressionElement> infix){
  2.         ArrayList<expressionElement> postfix = new ArrayList<expressionElement>();
  3.         ArrayDeque<expressionElement> ops = new ArrayDeque<expressionElement>();
  4.        
  5.         for(expressionElement element : infix){
  6.             if(element.getType().equals("int") || element.getType().equals("double")){ // IS a number
  7.                 postfix.add(element);
  8.             }
  9.             else{ // IS an operator
  10.                 // This next if tests if it's the stack is empty, or if it's something that we can push, regardless
  11.                 if (ops.size() == 0 || ops.peekLast().getOperator().equals("(") || element.getOperator().equals("(")) {
  12.                     ops.push(element);
  13.                 }
  14.                 else{
  15.                     // Using this table: http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence
  16.                     int currPrecedence = getPrecedence(element.getOperator());
  17.                    
  18.                     while (ops.size() != 0 && currPrecedence <= getPrecedence(ops.peekLast().getOperator())) {
  19.                         postfix.add(ops.removeLast());
  20.                     }
  21.                     ops.push(element);
  22.                 }
  23.             }
  24.         }
Advertisement
Add Comment
Please, Sign In to add comment