转换思路:
1、中缀表达式转为字符数组按顺序遍历
2、读到操作数的时,添加到要输出字符串
3、读到操作符是“(”,则直接把“(”压入栈中。
4、读到操作符“)”,则从栈中弹出栈元素并添加到要输出的字符串,直到遇到第一个“(”为止
5、读到操作符“+”,“-”,若栈不为空且栈顶元素不是“(” 符号就弹栈中的数据,添加到要输出的字符串,否则就压栈
6、读到操作符“*”,“/”,若栈不为空且栈顶元素是“*”,“/”就从栈中弹出栈元素并输出添加到要输出字符串,否则就压栈
计算后缀表达式思路
1、后缀表达式转为字符数组按顺序遍历
2、若是数字就进行压栈操作,若是操作数就弹出两个进行运算
注意:用弹出的第二个数去操作(+ - * /)弹出的第一个数
代码实现
package com.zhl.dataStructure.stack;
import java.util.EmptyStackException;
import java.util.Stack;
/**
*
* @author Administrator
*
*/
public class Postfix {
/**
* 将后缀转换为后缀表达式
*
* @param infix
* @return
*/
public static St