Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package StacksAndQueues1;
- import java.util.ArrayDeque;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class InfixToPostfix {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String[] input = scanner.nextLine().split(" ");
- ArrayDeque<String> operators = new ArrayDeque<>();
- ArrayDeque<String> expression = new ArrayDeque<>();
- Map<String, Integer> priorities = new HashMap<>();
- priorities.put("*", 3);
- priorities.put("/", 3);
- priorities.put("+", 2);
- priorities.put("-", 2);
- priorities.put("(", 1);
- for (String element : input) {
- try {
- double num = Double.parseDouble(element);
- expression.addLast(element);
- } catch (Exception e) {
- switch (element) {
- case "x":
- expression.addLast(element);
- break;
- case "(":
- operators.push(element);
- break;
- case ")":
- String symbol = operators.pop();
- while (!symbol.equals("(")) {
- expression.addLast(symbol);
- symbol = operators.pop();
- }
- break;
- default:
- while (!operators.isEmpty() && priorities.get(operators.peek()) >= priorities.get(element)) {
- expression.addLast(operators.pop());
- }
- operators.push(element);
- break;
- }
- }
- }
- while (!operators.isEmpty()) {
- expression.addLast(operators.pop());
- }
- while (expression.size() > 0) {
- System.out.print(expression.pop() + " ");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment