1、简介

栈的应用中有后缀表达式的实现,主要思想为,对于一串字符串,如果是操作数,那么直接入栈,如果是操作符,那么让次栈顶元素与栈顶元素(注意顺序不能变)进行运算。效果如下:

2、代码实现

本文使用的是STL容器的stack容器,所有的方法都是打包好的,当然也可以自行实现一个。

#include<iostream>
#include<stack>
#include<string>
#include<cctype>
using namespace std;int main(){stack<int> st;bool flag = true;string s;cin >> s;cout << s << endl;for(int i = 0; i < s.length(); i++){char ch = s[i];if(isdigit(ch)){st.push(ch-'0');}else{int b = st.top();st.pop();int a = st.top();st.pop();int c;switch (ch) {case '+':c = a + b;break;case '-':c = a -b;break;case '*':c = a * b;break;case '/':if(b == 0){cout << 'ERROR' << endl;flag = false;break;}else{c = a / b;}break;}st.push(c);}}if(flag){cout << st.top();}else{cout << "ERROR" << endl;}return 0;}
输入:3472-*+55/-
输出:22

3、拓展

本文只是假设所有的操作数都是整数,但实际情况下,操作数以浮点数居多,这个时候该怎么考虑呢。

(10)数据结构-后缀表达式实现相关推荐

  1. 数据结构:后缀表达式(逆波兰表达式)

    逆波兰表达式计算 package com.atchina.stack;import java.util.ArrayList; import java.util.List; import java.ut ...

  2. java中缀表达式转后缀表达式(逆波兰算法)

    四则运算是栈的重要应用之一 中缀表达式转后缀表达式(逆波兰算法)过程 从左到右遍历中缀表达式 数字直接输出为后缀表达式一部分 如果是符号,则判断与栈顶元素的优先级 高于栈顶元素优先级直接入栈 低于或等 ...

  3. 使用栈实现中缀表达式转后缀表达式

    例子 例题1 中缀表达式"8+4-6*2" 后缀表达式表示为:8 4 + 6 2 * - 例题2 中缀表达式:(70 + 30) *20 + 10 / 2 - 3 后缀表达式: 7 ...

  4. 有趣的数据结构算法10——后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果

    有趣的数据结构算法10--后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果 解题思路 实现代码 GITHUB下载连接 在前一天已经利用栈完成2进制到8进制的转换.但是栈的应用方面还有很多,本次我将 ...

  5. python前缀表达式求值_python数据结构与算法 11 后缀表达式求值

    从本节开始,删除原版的英文,直接发译后的文稿. 后缀表达式求值 栈的最一个应用例子,计算一个后缀表达式的值.这个例子中仍然用栈的数据结构.不过,当扫描表达式的时候,这次是操作数压栈等待,不是转换算法中 ...

  6. Java数据结构和算法(六)——前缀、中缀、后缀表达式

    前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...

  7. 数据结构中缀表达式转后缀表达式与后缀表达式的求值实训报告_动图+源码,演示 Java 中常用数据结构执行过程及原理...

    程序员的成长之路互联网/程序员/成长/职场 关注 阅读本文大概需要 3.7 分钟. 作者:大道方圆cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, ...

  8. 【数据结构与算法】【12】前缀表达式、中缀表达式、后缀表达式

    什么是前缀表达式.中缀表达式.后缀表达式 前缀表达式.中缀表达式.后缀表达式,是通过树来存储和计算表达式的三种不同方式 以如下公式为例 (a+(b−c))∗d( a+(b-c) )*d(a+(b−c) ...

  9. 备战NOI 数据结构——栈与单调栈(stack) 以及后缀表达式

    栈 stack 引入 栈的概念 代码实现 定义和初始化(init) 入栈(push) 出栈(pop) 访问栈顶元素(query) 查询栈的元素个数(size) 判断是否为空(empty) 清空栈(cl ...

  10. java中缀表达式转后缀表达式_数据结构Java实现06----中缀表达式转换为后缀表达式...

    本文主要内容: 表达式的三种形式 中缀表达式与后缀表达式转换算法 一.表达式的三种形式: 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3.我们从小做数学题时,一直使用的就是中缀表达式. 后 ...

最新文章

  1. 瑞友天翼4.0在XP下安装注意事项
  2. SQLserver多条件查询
  3. 深入理解Async/Await
  4. linux go 安装路径,在Alpine Linux D的路径中找不到已安装的Go二进制文件
  5. 华为交换机屏蔽远程计算机,华为交换机远程telnet配置的小问题
  6. oracle 不能导入sql语句,oracle数据库导入.dmp脚本的sql 语句
  7. Attention模型
  8. jsp servlet mysql 乱码_关于jsp和servlet中的乱码问题
  9. 从化工技术员到微软最有价值专家(MVP)--我的IT从业路
  10. 你写得API接口代码真是一坨屎,难道不能对返回格式统一处理一下吗?
  11. JZOJ.5325【NOIP2017模拟8.21】九九归一
  12. 算法:同构字符串205. Isomorphic Strings
  13. php7.3手册_php7.3.8手册下载
  14. 软件项目管理期末选择题复习100题(含答案)
  15. 逃离996的年轻人却难逃租房的“坑”
  16. BUUCTF 荷兰宽带数据泄露
  17. 皇家骑士团 100问
  18. 20165219王彦博第一周学习总结
  19. CVF转IVF可能遇到的问题
  20. Qt QTreeWidget 详解

热门文章

  1. cygwin中访问windows分区
  2. jdk Queue抽象接口
  3. 机器学习在微博信息流推荐中的应用实践
  4. c# 执行js方法
  5. Kafka数据迁移MaxCompute最佳实践
  6. webpack, react项目中利用外部JS库提升效率
  7. Python菜鸟之路:原生Ajax/Jquery Ajax/IFrame Ajax的选用
  8. NSObject的load和initialize方法(转)
  9. apache tuscany(一)
  10. jQuery插件开发精品教程,让你的jQuery提升一个台阶