计算后缀表达式、Java
来源:互联网 发布:word mac版 编辑:程序博客网 时间:2024/05/21 21:41
后缀表达式为二叉树中的后序遍历后写出的表达式
以例题为例子,
12 4 + 13 - 6 2 * +=
易知正常顺序为
((12+4)-13)+(6*2)
使用栈来解这个问题
//定义栈的接口public interface IStack<E> { E push(E item); //入栈 E pop(); //出栈 E peek(); //取栈顶元素 int size(); //返回栈中元素的个数 boolean empty(); //判断栈是否为空}
//实现栈的接口import java.lang.reflect.Array;public class SeqStack<E> implements IStack<E> { private int maxsize; private int top; private E[] data; public SeqStack(Class <E> type,int maxsize){ this.maxsize=maxsize; top=-1; //栈为空top为-1 data = (E[])Array.newInstance(type, maxsize); } //入栈 public E push(E item) { if(!isfull()){ data[++top]=item; return item; } else return null; } // public E pop() { if(!empty()) return data[top--]; else return null; } public E peek() { if(!empty()){ return data[top]; } else return null; } public int size() { return top+1; } public boolean empty() { if(top==-1) return true; else return false; } public boolean isfull(){ if(top==maxsize-1) return true; else return false; }}
public class test { public static void main(String[] args) { char [] data={12,4,'+',13,'-',6,2,'*','+'}; SeqStack<Character> ss=new SeqStack<Character>(Character.class,data.length); for(int i=data.length-1;i>=0;i--){//循环将data的数据放入栈内 ss.push(data[i]); } //创建一个栈顺序表,用于暂时存放从ss取出来的数据 SeqStack<Character> ss0=new SeqStack<Character>(Character.class,data.length); int result=0; while(!ss.empty()){ char temp=ss.pop(); ss0.push(temp); //当栈弹出的字符为运算符,则开始运算 if(temp=='+'||temp=='-'||temp=='*'||temp=='/'){ result =eachOtherAdd(ss0);//调用运算方法 while(!ss0.empty()){//将运算结果和原来弹出多余的数据压回原来的栈顺序表 char temp0=ss0.pop(); ss.push(temp0); } } } System.out.println(result); } //调用所弹出的运算符和最后弹出是数据,运算出结果 public static int eachOtherAdd(SeqStack<Character> ss0){ //创建三个char类型来存储将要计算的数据 char c3=ss0.pop(); int i2=ss0.pop();//将char类型转换为int类型 int i1=ss0.pop(); int add=0;//创建一个运算后的结果 switch(c3){//判断运算符 case '+': add=i1+i2; break; case '-': add=i1-i2; break; case '*': add=i1*i2; break; case '/': add=i1/i2; break; } ss0.push((char)add); return add; }}
阅读全文
0 0
- 计算后缀表达式、Java
- Java 中缀表达式转后缀表达式 + 中/后缀表达式计算
- 使用堆栈计算后缀表达式--java实现
- JAVA实现中缀表达式转换为后缀表达式并计算
- java实现中缀表达式转后缀表达式并且计算
- (java)算术表达式的计算之后缀表达式
- Java实现中缀表达式转后缀表达式并计算结果
- 计算后缀表达式
- 计算后缀表达式
- 后缀表达式计算
- sicily 后缀表达式计算
- 后缀表达式计算
- 后缀表达式的计算
- 后缀表达式的计算
- 后缀表达式计算
- 后缀表达式计算
- 后缀表达式的计算
- 计算后缀表达式
- MongoDB分片
- java中equals方法的用法以及==的用法(转)
- Feature_Selection
- 第九周项目三——利用二叉树遍历思想解决问题
- Python代码Linux
- 计算后缀表达式、Java
- codeforces 858d(字典树)
- 用SQL实现 excel常用操作
- Edit Distance 解题报告
- Java数据类型和运算符
- c++中vector(向量)的用法
- 百度地图之显示地图
- JPanel面板的综合运用
- 第一次月总结!