Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public ArrayList<expressionElement> convertToPostfix(ArrayList<expressionElement> infix){
- ArrayList<expressionElement> postfix = new ArrayList<expressionElement>();
- ArrayDeque<expressionElement> ops = new ArrayDeque<expressionElement>();
- for(expressionElement element : infix){
- if(element.getType().equals("int") || element.getType().equals("double")){ // IS a number
- postfix.add(element);
- }
- else{ // IS an operator
- // This next if tests if it's the stack is empty, or if it's something that we can push, regardless
- if (ops.size() == 0 || ops.peekLast().getOperator().equals("(") || element.getOperator().equals("(")) {
- ops.push(element);
- }
- else{
- // Using this table: http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence
- int currPrecedence = getPrecedence(element.getOperator());
- while (ops.size() != 0 && currPrecedence <= getPrecedence(ops.peekLast().getOperator())) {
- postfix.add(ops.removeLast());
- }
- ops.push(element);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment