一、中缀转后缀表达式思路示意图
示例需求:中缀表达式:1+((2+3)×4)-5 转换成后缀表达式:1 2 3 + 4 × + 5 –
1、代码
package com.rf.springboot01.dataStructure.stack.reversePolishNotation;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/**
* @description: 中缀表达式转后缀表达式
* @author: xiaozhi
* @create: 2020-07-29 14:24
*/
public class infixConvertorSuffix {
public static void main(String[] args) {
// 定义一个中缀表达式, 示例:1+((2+3)×4)-5 =>1 2 3 + 4 × + 5 –
String expression = "1+((2+3)*4)-5";
//中缀表达式转成list 示例:1+((2+3)×4)-5 =>[1, +, (, (, 2, +, 3, ), *, 4, ), -, 5]
List infixConvertorList = infixConvertorList(expression);
System.out.println("中缀表达式对应的list======"+infixConvertorList);
List suffixList=infixListConvertorSuffixList(infixConvertorList);
System.out.println("后缀表达式对应的list======"+suffixList);
int result=computer(suffixList);
System.out.println("中缀表达式计算的结果为:"+result);
}
/**
* @Description: 中缀表达式转list
* @Param: String
* @Author: xz
* @return: java.util.List
* @Date: 2020/7/29 14:27
*/
public static List infixConvertorList(String str){
List list=new ArrayList();
String s;//用于多位数的拼接
char c;// 每遍历到一个字符,就放入到c
int i=0;
do{
if((c=str.charAt(i))57 ){//如果非数字
list.add(c+"");//字节转字符串,在添加到list
i++;
}else{//如果是数字,考虑多位数拼接
s="";
while(i=48 && (c=str.charAt(i))
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?