#include<stdio.h>
#include<stdlib.h>
#include<string.h>//栈的数据类型
typedef int SElemType ;//链栈的数据类型C语言描述typedef struct stack
{SElemType data;struct snode *next;
}Snode,*LinkStack;//1.初始化操作
void initLinkStak(LinkStack *LS)
{*LS=NULL;
}//2.判断栈是否空
int LinkStackEmpty(LinkStack LS)
{if(LS==NULL) return 1;else return 0;
}//3.得到栈顶
int LinkStackGetTop(LinkStack LS,SElemType *e)
{if(LS==NULL) return 0;*e=LS->data;return 1;
}//4.求栈的长度
int LinkListLength(LinkStack LS)
{LinkStack p=LS;int n=0;while(p){n++;p=p->next;}return n;
}//5.进栈
void Push(LinkStack *LS,SElemType e)
{//生成新的结点插入到原来的第一个节点之前,头插法LinkStack p=(LinkStack)malloc(sizeof(Snode));p->data=e;p->next=*LS;*LS=p;
}//6.出栈
void Pop(LinkStack *LS,SElemType *e)
{LinkStack p=*LS;if(*LS==NULL)return 0;*e=p->data;*LS=(*LS)->next;free(p);return 1;
}
//后缀表达式求值
void suffix_value(char data[]);  void main()
{char data[80];printf("请输入表达式:\n"); //输入表达式,允许出现() [] {}gets(data);suffix_value(data);
}//后缀表达式求值
void suffix_value(char data[])
{LinkStack S;int i=0,x1,x2,result;initLinkStak(&S);while(data[i]!='#'){switch(data[i]){case '+':Pop(&S,&x2);Pop(&S,&x1);Push(&S,x1+x2);break;case '-':Pop(&S,&x2);Pop(&S,&x1);Push(&S,x1-x2);break;case '*':Pop(&S,&x2);Pop(&S,&x1);Push(&S,x1*x2);break;case '/':Pop(&S,&x2);Pop(&S,&x1);if(x2!=0)Push(&S,x1/x2);else{printf("分母为0!\n");return 0;}case 32:break;default:Push(&S,data[i]-48);   //将字符转换为整数送栈}i++;}Pop(&S,&result);printf("结果=%d\n",result);
}


栈的应用 后缀表达式求值相关推荐

  1. 栈应用:后缀表达式求值

    在上一篇博客 栈应用:中缀表达式转后缀表达式 中我们知道如何通过栈将中缀表达式转为后缀表达式,这次我们继续用栈 来实现后缀表达式求值,结合上一篇博客. 上一篇博客中是用c语言实现的,由于c语言中不支持 ...

  2. C语言栈的应用——后缀表达式求值

    算法思路 ​ 上次已经完成了由中缀表达式转后缀表达式的算法,而后缀表达式的优点就是可以从左至右直接读取,没有算数优先级的考量,所以直接进行运算即可. ​ 该算法需要使用一个栈用来保存操作数,在读取到数 ...

  3. 基于栈的后缀表达式求值(洛谷P1449题题解,Java语言描述)

    题目要求 P1449题目链接 分析 给出后缀表达式求值,就相当于没了括号,而且很直接. 我们需要使用栈结构来完成任务. Java原装的栈使用了很多synchronized,导致性能不佳,但我们也就将就 ...

  4. 使用栈解决的一类经典问题:表达式转换及求值;中缀表达式;前缀表达式,后缀表达式,中缀转前缀;中缀转后缀;后缀表达式求值;波兰式,逆波兰式

    文章目录 背景知识 表达式转换问题(考研经典) 一:手工转换 (1)中缀转前缀和中缀转后缀 (2)前缀转中缀和后缀转中缀 二:用栈实现表达式转换 (1)中缀转后缀 (2)中缀转前缀 表达式计算问题(使 ...

  5. php表达式求值,PHP实现基于栈的后缀表达式求值功能

    本文实例讲述了PHP实现基于栈的后缀表达式求值功能.分享给大家供大家参考,具体如下: 后缀表达式概述 后缀表达式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左 ...

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

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

  7. java求值不用后缀表达式_数据结构之后缀表达式求值(java实现)

    数据结构之后缀表达式求值(java实现) 前记 ​ 今天在刷leet code的时候刷到了一道题,后缀表达式(逆波兰表达式)求值,我花了一会儿写了一下它的解法.但是今天我不谈什么是后缀表达式,有兴趣的 ...

  8. 后缀表达式求值和转换(C++)

    中缀转后缀 #include<stdio.h> #include<stack> using namespace std; stack<int> s; int com ...

  9. python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图

    python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...

  10. 【数据结构】详解栈的应用之表达式求值

    首先明白: 前缀表达式:符号在前,如-×+3456 中缀表达式:符号在中间,如(3 + 4) × 5 - 6 后缀表达式:符号在最后,如34+5×6-,后缀表达式不出现括号. 中缀表达式转后缀表达式的 ...

最新文章

  1. ubuntu server安装php mysql_Ubuntu Server 下Apache+MySQL+PHP安装
  2. 从html导出带样式的excel,关于将HTML导出到Excel中时样式的问题
  3. nebula-gql语句之时间差值计算
  4. SQL server注入
  5. Martin Odersky Scala编程公开课 第三周作业
  6. PYTORCH BN层
  7. USACO1.1.1 - PROB Your Ride Is Here
  8. ucosiii 钩子函数
  9. redis用zookeeper实现自动主从同步,切换
  10. 关于上兴远程监控的使用
  11. 基于四叉树的图像压缩问题
  12. js验证银行卡身份证手机号中文数字金额等
  13. 软件需求的三个层次——业务需求、用户需求和功能需求的区别
  14. 易安居平安家园隐私政策
  15. Android 蓝牙 搜索周围设备代码流程分析-framework到协议栈流程
  16. 为什么 128 KB 的魂斗罗可以塞下这么长的剧情?
  17. 一尺、一英尺、一寸和一英寸分别等于多少厘米?
  18. 施工行业项目管理软件
  19. 洛谷:P5594 【XR-4】模拟赛
  20. cxonev4验证用户_cxone软件配置

热门文章

  1. 编译aspell时出错
  2. 09月23日 pytorch与resnet(一)
  3. PySpark任务在YARN集群上运行python 算法
  4. 数据--第45课 - 最短路径
  5. CSS小技巧--文字对齐
  6. i.MX6 设备树 GPIO 默认值
  7. sql server 死锁排查
  8. c++中模板的实现(模板类和模板函数)
  9. ThinkPHP验证码和分页
  10. 对MYSQL进行压力测试