zoukankan      html  css  js  c++  java
  • 数据结构栈之计算后缀表达式

    对于一个给定的后缀表达式,(如果它是合法的)

    注意:次算法是基于基本操作符是2元操作符且操作数为一位正整数!

    其求值的基本思想是:对于给定的表达式进行遍历,假设遇到的是操作数就将其压入栈;假设遇到的是操作符,将栈顶的两个元素弹出,假设栈顶两个元素依次为a,b(a在上b在下),将次操作符应用于这两个栈顶元素,比方b-a(注意b在左a在右)然后将计算结果压入栈(用来充当下一个操作符的操作数);

     最后输出栈顶元素即为结果(事实上假设表达式合法终于栈里面一定会仅仅有一个元素)

     

    #include <stdio.h> //后缀表达式求值
    #include <iostream>
    #include <cstring>
    #include <stack>
    #include <ctype.h>
    #include <algorithm>
    using namespace std;
    int main()
    {
    	char c;
    	stack <int> s;
    	while(scanf("%c",&c)!=EOF)
    	{
    		if(c=='#')break;
    		if(isdigit(c))
    			s.push(c-'0');
    		else
    		{
    			int a=s.top();
    			s.pop();
    			int b=s.top();
    			s.pop();
    			switch(c)
    			{
    				case '+':s.push(b+a);break;
    				case '-':s.push(b-a);break;
    				case '*':s.push(b*a);break;
    				case '/':s.push(b/a);break;
    			}
    		}
    	}
    	cout<<s.top()<<endl;
    	return 0;
    }

     

  • 相关阅读:
    更新安装xcode7插件
    提交自己的插件包(package)
    数组包含字典-根据key排序
    primeng 中 pickList组件的使用
    tomcat的启动和部署
    css中如何把鼠标变成手
    angular2新建组件
    Angular2的笔记
    idea 创建springboot工程
    jfinal excel表导出
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6914247.html
Copyright © 2011-2022 走看看