Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class HelloWorld {
- public static void main(String[] args){
- Queue postfix = new LinkedList();
- String str = "(p^r)^q";
- //Stack stk = new Stack();
- // String token = "(";
- /// stk.push(token);
- //stk.push("z");
- //System.out.println("(".equals(stk.peek()));
- // boolean check = isBracket(token);
- System.out.println(getPostfix(str));
- // System.out.println("(".equals(stk.peek()));
- }
- public static boolean isVar(String token){
- return (Character.isAlphabetic(token.charAt(0)));
- }
- public static boolean isOperator(String token){
- String operators="!~>^.|";
- return operators.contains(token);
- }
- public static boolean isBracket(String token){
- String brackets = "(){}[]";
- return brackets.contains(token);
- }
- public static int getPrecedence(String token){
- int precedence;
- switch(token){
- case "~" :
- case "! ": precedence = 5; break;
- case "&&":
- case "+" :
- case "^" : precedence = 4; break;
- case "||":
- case "V" :
- case "." : precedence = 3; break;
- case ">" : precedence = 2; break;
- case "=" :
- case "#" : precedence = 1; break;
- default : precedence = -1; break;
- }
- return precedence;
- }
- public static Queue getPostfix(String raw){
- String[] input=raw.split("(?<=\\G.)");
- Stack stk = new Stack();
- Queue postfix = new LinkedList();
- for(String token : input){
- if(isVar(token)){
- postfix.add(token);
- }
- if(isOperator(token)){
- while(!stk.isEmpty() && (getPrecedence((String)stk.peek())) <= getPrecedence(token)){
- postfix.add(stk.peek());
- stk.pop();
- }
- stk.add(token);
- }
- if(isBracket(token)){
- switch(token){
- case "(":
- case "[":
- case "{":
- stk.push(token);
- break;
- case ")":
- case "]":
- case "}":
- }
- }
- }
- while(!stk.isEmpty()){
- postfix.add(stk.peek());
- stk.pop();
- }
- return postfix;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement