栈的应用实例——计算后缀表达式
用户输入一个后缀表达式,程序计算该后缀表达式的值并输出结果:
/* postfix_expression.c */#include "stack.h" #include <stdio.h> #include <stdlib.h> #include <ctype.h>int main() {int i, flag;char c, data_string[10];float data, f1, f2, result;stack data_stack;data_stack = create_stack(100);printf("Please input a postfix expression:\n");i = 0;for(c = getchar(); c != '\n'; c = getchar()){switch(c){case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8': case '9':case '.':flag = 1;data_string[i++] = c;break;case ' ':if(flag == 1){data_string[i] = '\0';data = atof(data_string);push(data, data_stack);i = 0;data_string[0] = '\0';}break;case '+':flag = 0;f1 = top_and_pop(data_stack);f2 = top_and_pop(data_stack);result = f1 + f2;push(result, data_stack);break;case '-':flag = 0;f1 = top_and_pop(data_stack);f2 = top_and_pop(data_stack);result = f1 - f2;push(result, data_stack);break;case '*':flag = 0;f1 = top_and_pop(data_stack);f2 = top_and_pop(data_stack);result = f1 * f2;push(result, data_stack);break;case '/':flag = 0;f1 = top_and_pop(data_stack);f2 = top_and_pop(data_stack);result = f1 / f2;push(result, data_stack);break;}}result = top_and_pop(data_stack);printf("result = %.2f\n", result); }
上面的程序中所使用的stack.h参考http://www.cnblogs.com/nufangrensheng/p/3610520.html。(注:stack.h中使用的是
typedef int element_type;
)
测试实例:
后缀表达式 6 5 2 3 + 8 * + 3 + * 的中缀表达式(我们平常使用的形式)为:6 * { [ 5 + ( 2 + 3 ) * 8 ] + 3 } = 288.
测试结果:
转载于:https://www.cnblogs.com/nufangrensheng/p/3615059.html
栈的应用实例——计算后缀表达式相关推荐
- 栈应用(中缀表达式转后缀表达式并计算后缀表达式的值)
[0]README 0.1) 本文旨在总结 中缀表达式转后缀表达式并计算后缀表达式的值 的步骤,并给出源代码实现: 0.2) 本文中涉及到的源代码均为原创,是对中缀转后缀和计算后缀的简单实现,(旨在理 ...
- C++做四则运算的MFC计算器(二)栈转换和计算后缀表达式
上篇写了MFC界面搭建,这篇就写实现计算.涉及到数据结构,对新手很不友好. 虽然是MFC程序,但是能灵活地分离后台代码,自行构建控制台程序. 上一篇文章链接:C++做四则运算的MFC计算器(一)MFC ...
- 有趣的数据结构算法10——后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果
有趣的数据结构算法10--后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果 解题思路 实现代码 GITHUB下载连接 在前一天已经利用栈完成2进制到8进制的转换.但是栈的应用方面还有很多,本次我将 ...
- 用栈实现计算后缀表达式(0-9数值运算示例)
一.原理 可以先建立一个栈S .从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作符运算,再将运算的结果代替原栈顶的n项,压 ...
- # 20155224 第十一周 课堂练习《计算后缀表达式的值》
20155224 第十一周 课堂练习<计算后缀表达式的值> 代码实现 操作数和运算符的入栈与计算如下: //如果是运算符,调用isOperatorif (isOperator(token) ...
- java简易计算机(用栈实现中缀转后缀,计算后缀表达式)
这学期java课的一个小作业,用java编一个小计算器. 个人认为要点在于: 1.计算机的布局,即按钮和输出框的布局需要知道怎么操作,按钮的大小和字体的大小颜色.不同布局中按钮的改变大小等等 2.用栈 ...
- 使用栈实现中缀表达式转换成后缀表达式并计算结果(逆波兰计算器)
一.中缀表达式转换成后缀表达式 具体步骤如下: 1.初始化栈stack(暂时存放运算符)以及集合list(存放后缀表达式) 2.从左向右扫描中缀表达式 3.当前元素为数字时,直接添加到list中 4. ...
- 数据结构——栈——中缀表达式和后缀表达式
什么是中缀表达式,什么是后缀表达式 我们一般看见的多项式计算都是中缀表达式构成的:1+2*3+4/3 类似这种,为什么说是中缀呢?因为它的计算符号都是在两个数中间的. 那么自然而然的明白了后缀表达式是 ...
- 前缀、中缀和后缀表达式详解,中缀表达式到后缀表达式的转换规则,以及后缀表达式的计算规则,附计算代码
1. 中缀.前缀和后缀表达式 1.1 中缀表达式 首先,中缀表达式的这个"缀"指运算符在两个操作数的位置.中缀表达式其实就是我们常用的算术表达式,比如 2 + 9 - (32 * ...
最新文章
- Redis的文件格式
- GPT-3成精了,万物皆文本时代来临!10年内通过图灵测试?
- oracle 分析函数1
- Python操作Rabbit MQ的5种模式
- 每天一道LeetCode-----将链表每k个节点逆序一次
- 监管大屏系统_餐饮公示大屏广告位招商正式启动!
- java jpeg压缩解码_图片压缩(iOS)
- java实现人脸识别源码【含测试效果图】——实体类(Users)
- 前端学习(2765):如何传递事件和参数
- mysql数据库开发要求_MYSQL数据库开发规范
- phpcmsV9推荐位posid文章,图片不显示问题 - 思路篇
- 破解网站发布系统 ASP生成静态页面方法
- linux tomcat catalina.out 乱码,Tomcat输出日志乱码解决
- Jensen不等式概率论形式的证明
- ubuntu系统安装记录
- 使用腾讯 CDN,结果网站现在出现您的连接不是私密连接”“,”隐私设置错误”如何解决?
- 联通服务器光信号亮红灯移动,联通los红灯闪啥意思(图文)
- C# 添加、删除PPT水印
- 计算机win7等级考试试题,计算机等级考试一级win7操作题.docx
- CE实现植物大战僵尸之阳光篇
热门文章
- 【ruoyi若依】启用HTTPS/SSL后,首页重定向出错
- windows 安装 openssl
- kafaka生产者消费者demo(简易上手demo)
- 以下描述中不属于python语言控制结构的是_高中信息技术《Python语言》模块试卷...
- html5导航菜单置顶,jQuery和css3顶部固定导航菜单特效插件
- java主要开发哪几类程序,开发与运行Java程序需要经过的主要步骤为:(多选)
- c语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出,从键盘上输入3个数,将它们按由大到小的顺序排列好输出...
- 滑动轮播_这样运营轮播图可以增加订单
- linux db2 强制停止,DB2强制退出ROLLBACK状态
- oracle datafilereuse,Oracle 数据文件 reuse 属性 说明