用户输入一个后缀表达式,程序计算该后缀表达式的值并输出结果:

/* 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

栈的应用实例——计算后缀表达式相关推荐

  1. 栈应用(中缀表达式转后缀表达式并计算后缀表达式的值)

    [0]README 0.1) 本文旨在总结 中缀表达式转后缀表达式并计算后缀表达式的值 的步骤,并给出源代码实现: 0.2) 本文中涉及到的源代码均为原创,是对中缀转后缀和计算后缀的简单实现,(旨在理 ...

  2. C++做四则运算的MFC计算器(二)栈转换和计算后缀表达式

    上篇写了MFC界面搭建,这篇就写实现计算.涉及到数据结构,对新手很不友好. 虽然是MFC程序,但是能灵活地分离后台代码,自行构建控制台程序. 上一篇文章链接:C++做四则运算的MFC计算器(一)MFC ...

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

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

  4. 用栈实现计算后缀表达式(0-9数值运算示例)

    一.原理 可以先建立一个栈S .从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作符运算,再将运算的结果代替原栈顶的n项,压 ...

  5. # 20155224 第十一周 课堂练习《计算后缀表达式的值》

    20155224 第十一周 课堂练习<计算后缀表达式的值> 代码实现 操作数和运算符的入栈与计算如下: //如果是运算符,调用isOperatorif (isOperator(token) ...

  6. java简易计算机(用栈实现中缀转后缀,计算后缀表达式)

    这学期java课的一个小作业,用java编一个小计算器. 个人认为要点在于: 1.计算机的布局,即按钮和输出框的布局需要知道怎么操作,按钮的大小和字体的大小颜色.不同布局中按钮的改变大小等等 2.用栈 ...

  7. 使用栈实现中缀表达式转换成后缀表达式并计算结果(逆波兰计算器)

    一.中缀表达式转换成后缀表达式 具体步骤如下: 1.初始化栈stack(暂时存放运算符)以及集合list(存放后缀表达式) 2.从左向右扫描中缀表达式 3.当前元素为数字时,直接添加到list中 4. ...

  8. 数据结构——栈——中缀表达式和后缀表达式

    什么是中缀表达式,什么是后缀表达式 我们一般看见的多项式计算都是中缀表达式构成的:1+2*3+4/3 类似这种,为什么说是中缀呢?因为它的计算符号都是在两个数中间的. 那么自然而然的明白了后缀表达式是 ...

  9. 前缀、中缀和后缀表达式详解,中缀表达式到后缀表达式的转换规则,以及后缀表达式的计算规则,附计算代码

    1. 中缀.前缀和后缀表达式 1.1 中缀表达式 首先,中缀表达式的这个"缀"指运算符在两个操作数的位置.中缀表达式其实就是我们常用的算术表达式,比如 2 + 9 - (32 * ...

最新文章

  1. Redis的文件格式
  2. GPT-3成精了,万物皆文本时代来临!10年内通过图灵测试?
  3. oracle 分析函数1
  4. Python操作Rabbit MQ的5种模式
  5. 每天一道LeetCode-----将链表每k个节点逆序一次
  6. 监管大屏系统_餐饮公示大屏广告位招商正式启动!
  7. java jpeg压缩解码_图片压缩(iOS)
  8. java实现人脸识别源码【含测试效果图】——实体类(Users)
  9. 前端学习(2765):如何传递事件和参数
  10. mysql数据库开发要求_MYSQL数据库开发规范
  11. phpcmsV9推荐位posid文章,图片不显示问题 - 思路篇
  12. 破解网站发布系统 ASP生成静态页面方法
  13. linux tomcat catalina.out 乱码,Tomcat输出日志乱码解决
  14. Jensen不等式概率论形式的证明
  15. ubuntu系统安装记录
  16. 使用腾讯 CDN,结果网站现在出现您的连接不是私密连接”“,”隐私设置错误”如何解决?
  17. 联通服务器光信号亮红灯移动,联通los红灯闪啥意思(图文)
  18. C# 添加、删除PPT水印
  19. 计算机win7等级考试试题,计算机等级考试一级win7操作题.docx
  20. CE实现植物大战僵尸之阳光篇

热门文章

  1. 【ruoyi若依】启用HTTPS/SSL后,首页重定向出错
  2. windows 安装 openssl
  3. kafaka生产者消费者demo(简易上手demo)
  4. 以下描述中不属于python语言控制结构的是_高中信息技术《Python语言》模块试卷...
  5. html5导航菜单置顶,jQuery和css3顶部固定导航菜单特效插件
  6. java主要开发哪几类程序,开发与运行Java程序需要经过的主要步骤为:(多选)
  7. c语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出,从键盘上输入3个数,将它们按由大到小的顺序排列好输出...
  8. 滑动轮播_这样运营轮播图可以增加订单
  9. linux db2 强制停止,DB2强制退出ROLLBACK状态
  10. oracle datafilereuse,Oracle 数据文件 reuse 属性 说明