中缀表达式转换到后缀表达式(java实现)
来源:互联网 发布:环境地质数据包括哪些 编辑:程序博客网 时间:2024/06/06 12:48
/*
将中缀表达式转换为后缀表达式
定义优先级:'(' :4
'*', '/' :3
'+', '-': 2
')' : 1
思路:
循环遍历输入字符数组
if input[i]是数字,则print; continue;
循环
if栈空,则input[i]入栈,break;
if outputPriority < inputPriority ,则input[i]入栈,break;
if outputPriority >= inputPriority
if output != '(' ,则print(output),continue;
else
if(input != ')'),则出栈; break;
else input[i] 入栈; break;
*/
将中缀表达式转换为后缀表达式
定义优先级:'(' :4
'*', '/' :3
'+', '-': 2
')' : 1
思路:
循环遍历输入字符数组
if input[i]是数字,则print; continue;
循环
if栈空,则input[i]入栈,break;
if outputPriority < inputPriority ,则input[i]入栈,break;
if outputPriority >= inputPriority
if output != '(' ,则print(output),continue;
else
if(input != ')'),则出栈; break;
else input[i] 入栈; break;
*/
import java.util.*;public class MidExpToLaterExp{public static void main(String[] args){Scanner scan = new Scanner(System.in);char[] input = scan.next().toCharArray();Stack stack = new Stack(10);for(int i = 0; i < input.length; i ++){int inputPriority = getPriority(input[i]);if(inputPriority == 0){System.out.print(input[i]);continue;}while(true){if(stack.isEmpty()){stack.push(input[i]);break;}char output = stack.peek();int outputPriority = getPriority(output);if(outputPriority < inputPriority){stack.push(input[i]);break;}else{if(output != '('){stack.pop();System.out.print(output);continue;}else{if(input[i] != ')'){stack.push(input[i]);break;}else{stack.pop();break;}}}}}while(!stack.isEmpty()){System.out.print(stack.pop());}}public static int getPriority(char ch){int priority = 0;switch(ch){case '(' : priority = 4; break;case '*' : case '/' : priority = 3; break;case '+' : case '-' : priority = 2; break;case ')' : priority = 1; break;}return priority;}}class Stack{private char[] array;private int top;private int maxSize;public Stack(int maxSize){this.maxSize = maxSize;array = new char[maxSize];top = 0;}public void push(char ch){array[top++] = ch;}public char pop(){return array[--top];}public char peek(){return array[top -1];}public boolean isEmpty(){return top == 0;}public boolean isFull(){return top == maxSize;}}
0 0
- 中缀表达式转换到后缀表达式(java实现)
- 中缀表达式转换后缀表达式并求值(java实现)
- 中缀表达式转换后缀表达式并求值(java实现)
- 中缀到后缀表达式的转换:java-stack实现
- 实现中缀表达式到后缀表达式的转换
- 中缀表达式到后缀表达式的转换C++实现
- 中缀表达式到后缀表达式的转换
- 中缀表达式到后缀表达式的转换
- 中缀表达式到后缀表达式的转换
- JAVA实现中缀表达式转换为后缀表达式并计算
- 数据结构Java实现06----中缀表达式转换为后缀表达式
- 数据结构Java实现06----中缀表达式转换为后缀表达式
- 数据结构Java实现06----中缀表达式转换为后缀表达式
- Java 中缀表达式转换为后缀表达式
- 后缀表达式(4)-——中缀表达式到后缀表达式的转换,递归实现
- java 实现中缀表达式转为后缀表达式
- 中缀表达式、后缀表达式 Java实现
- 表达式 中缀 后缀 转换
- nyoj-648-数字1的数量
- 高效面试之leetcode链表题汇总
- 【ORACLE_环境】ORACLE手工创建数据库(含图解)
- 分治策略-递归(1)-求一个数的N次方
- Mac 下配置vi的语法高亮 显示行号 自动缩进
- 中缀表达式转换到后缀表达式(java实现)
- 【ORACLE_环境】ORACLE中安装Gird Control(含图解)
- warning:deprecated conversion from string constant to 'char *'
- 【FreeMarker】【程序开发】在Servlet中使用FreeMarker
- YII MVC之用户注册和用户登录(一)
- 通过管道实现文件复制
- 高效面试之栈
- 获取指定目录下的文件列表
- 实现所有文件格式复制