学习笔记------数据结构(C语言版)栈应用 表达式求值
来源:互联网 发布:北京和隆优化科技 编辑:程序博客网 时间:2024/05/23 23:02
//main.cpp
#include "predefined.h"#include "SqStack.h"SElemType EvaluateExpression();SElemType GetTop_OPTR(SqStack S);Status In(SElemType c);SElemType Precede(SElemType c1,SElemType c2);SElemType Operate(SElemType a,SElemType c,SElemType b);int main(){SElemType result;printf("请输入表达式:");result=EvaluateExpression();printf("=%c",result);return 0;}SElemType EvaluateExpression()//算术表达式求值的算符优先算法。设OPTR和OPND分别为运算符栈和运算数栈,//OP为运算符集合。{SqStack OPTR,OPND;InitStack(&OPTR);InitStack(&OPND);Push(&OPTR,'#');SElemType a,b,c,d;c=getchar();while(c!='#'||GetTop_OPTR(OPTR)!='#'){if(!In(c)){Push(&OPND,c);c=getchar();}else{switch(Precede(GetTop_OPTR(OPTR),c)){case '>':Pop(&OPTR,&d);Pop(&OPND,&b);Pop(&OPND,&a);Push(&OPND,Operate(a,d,b));break;case '<':Push(&OPTR,c);c=getchar();break;case '=':Pop(&OPTR,&c);c=getchar();break;}}}return GetTop_OPTR(OPND);}SElemType GetTop_OPTR(SqStack S){if(StackEmpty(S)) return ERROR;return *((S).top-1);}Status In(SElemType c){switch(c){case '+':case '-':case '*':case '/':case '(':case ')':case '#':return TRUE;default:return FALSE;}}SElemType Precede(SElemType c1,SElemType c2){SElemType f;switch(c1){case '+':case '-':if(c2=='*'||c2=='/'||c2=='(') f='<'; else f='>';break;case '*':case '/':if(c2=='(') f='<'; else f='>';break;case '(':if(c2==')') f='='; else if(c2=='#') { printf("输入错误!!!\n"); exit(ERROR); } else f='<';break;case ')':if(c2=='(') { printf("输入错误!!!\n"); exit(ERROR); } else f='>';case '#':if(c2==')') { printf("输入错误!!!\n"); exit(ERROR); } else if(c2=='#') f='='; else f='<'; break;}return f;}SElemType Operate(SElemType a,SElemType c,SElemType b){SElemType x=a-48;SElemType y=b-48;switch(c){case '+':return (x+y+48);case '-':return (x-y+48);case '*':return (x*y+48);case '/':return (x/y+48);}}
0 0
- 学习笔记------数据结构(C语言版)栈应用 表达式求值
- 数据结构C语言版之表达式求值
- 学习笔记------数据结构(C语言版)栈应用 括号匹配
- 学习笔记------数据结构(C语言版)栈应用 行编辑程序
- 学习笔记------数据结构(C语言版)栈应用 迷宫寻路
- 数据结构(c语言版) 学习笔记
- c语言版数据结构(奇迹冬瓜)-栈实战(4)表达式求值
- 表达式求值 数据结构 C/C++ 栈的应用
- 数据结构 - 栈的应用:表达式求值(C)
- 学习笔记------数据结构(C语言版)栈的顺序存储
- 学习笔记------数据结构(C语言版)栈和递归 汉诺塔
- 严蔚敏--数据结构(C语言版)学习笔记
- 数据结构(C语言版)-递归学习笔记
- 四则运算表达式求值程序(C语言版)
- 数据结构 栈的应用-- 表达式求值
- 【数据结构】栈的应用 I :表达式求值
- 栈的应用-表达式求值-数据结构
- 表达式求值(数据结构-栈的应用 )
- sdk(安卓)
- 反汇编---汇编基础学习
- 判断语言环境
- 学习笔记3 Supervised Neural Networks
- Android 三大图片缓存原理、特性对比
- 学习笔记------数据结构(C语言版)栈应用 表达式求值
- 大数据IMF行动传奇 迈向SparkContext天堂之门! 探索天堂之门!
- 155. Min Stack
- 汉字转换拼音
- 使用Spring JMS收发消息
- log4j【6】(Java日志)
- 4260: Codechef REBXOR trie
- Logback 使用之 Hello (使用 gradle 构建)
- 2016蓝桥杯假期任务之《大小写转换》