栈的应用:通过用户输入后缀表达式,利用数据结构栈计算其结果值。
2014-04-12 18:30
766 查看
package none004解析计算表达式栈; //通过用户输入后缀表达式,利用数据结构栈计算其结果值。 import java.io.*; import java.util.*; public class PostfixApp { /** * @param args */ public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub String input; int output; while(true){ System.out.print("Enter postfix: "); System.out.flush(); input=getString(); if(input.equals("")) break; ParsePost pp=new ParsePost(input); output=pp.doParse(); System.out.println("Evaluates to "+output); } } public static String getString() throws IOException{ InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); String s=br.readLine(); return s; } } class ParsePost{ private StackX theStack; private String input; public ParsePost(String s){ input=s; } public int doParse(){ theStack=new StackX(20); char ch; int j; int num1,num2,interAns; for(j=0;j<input.length();j++){ ch=input.charAt(j); theStack.displayStack(""+ch+" "); if(ch>='0'&&ch<='9') theStack.push((int)(ch-'0')); else { num2=theStack.pop(); num1=theStack.pop(); switch(ch){ case '+': interAns=num1+num2; break; case '-': interAns=num1-num2; break; case '*': interAns=num1*num2; break; case '/': interAns=num1/num2; break; default: interAns=0; } theStack.push(interAns); } } interAns=theStack.pop(); return interAns; } } class StackX{ int items; int[] arrayStack; int s; StackX(int max){ s=max; arrayStack=new int[s]; items=-1; } public void push(int value){ if(items==s-1) System.out.println("栈已经等于最大值了。"); else arrayStack[++items]=value; } public int pop(){ return arrayStack[items--]; } public boolean isEmpty(){ return items==-1; } public int peek(){ if(items==-1) return 0; else return arrayStack[items]; } public boolean isFull(){ return items==s-1; } public int size(){ return items+1; } public void displayStack(String s){ System.out.print(s); System.out.print("Stack(bottom-->top: "); for(int j=0;j<size();j++){ System.out.print(peek()); System.out.print(' '); } System.out.println(""); } }
相关文章推荐
- C++数据结构与STL--栈的应用--后缀表达式的计算
- c++ 数据结构 利用顺序栈计算后缀表达式的值
- 输入一个字符串表达式,输出计算结果(队列、栈的应用)
- 大话数据结构——栈的应用四则元算表达式求值(后缀表达式计算结果)
- java中的栈Stack的基本使用和应用(二) ——利用栈计算合法的算术表达,中缀表达式转后缀表达式
- python3如何将input输入的字符串转化为表达式并计算出结果
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- C++表达式求值(利用数据结构栈)
- 栈应用(中缀表达式转后缀表达式并计算后缀表达式的值)
- 输入数学表达式并计算出结果(包括小数)
- 黑客利用恶意软件窃取用户数据,通过代码签名证书加强安全防护
- Google将通过Gmail、Calendar和Google+数据为用户提供个性化搜索结果
- 从控制台输入一个二元表达式 并计算其结果
- 数据结构-栈-计算后缀表达式
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- 栈的应用--表达式计算&中缀转后缀
- 《java数据结构与算法》笔记-CH4-8栈结构实现后缀表达式计算结果
- 版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷
- 中缀表达式转后缀表达式并计算结果
- Java实现中缀表达式转后缀表达式并计算结果