利用栈求表达式地值

利用栈求表达式地值

ID:47082748

大小:18.88 KB

页数:11页

时间:2019-07-19

利用栈求表达式地值_第1页
利用栈求表达式地值_第2页
利用栈求表达式地值_第3页
利用栈求表达式地值_第4页
利用栈求表达式地值_第5页
资源描述:

《利用栈求表达式地值》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用文档题目:利用栈求表达式的值一.设计任务和目标编写程序实现表达式求值,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值。主要功能描述如下:1、从键盘上输入表达式。2、分析该表达式是否合法:(1)是数字,则判断该数字的合法性。若合法,则压入数据到堆栈中。(2)是规定的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。(3)若是其它字符,则返回错误信息。主要功能描述如下:1、从键盘上输入表达式。2、分析该表达式是否合法:(1)是数字,则判断该数字的合法性。若合法,则压入数据到堆栈中。(2)是规定

2、的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。(3)若是其它字符,则返回错误信息。标准文案实用文档程序应包括以下几个功能函数voidinitstack();初始化堆栈intMake_str();语法检查并计算intpush_operate(intoperate):将操作码压入堆栈intpush_num(doublenum):将操作数压入堆栈intprocede(intoperate):处理操作码intchange_opnd(intoperate):将字符型操作码转换成优先级intpush_opnd(

3、intoperate):将操作码压入堆栈intpop_opnd();将操作码弹出堆栈intcaculate(interru_opnd):简单计算+,-,*,/doublepop_num():弹出操作数程序如下:#include"stdio.h"#include"string.h"#include"stdlib.h"#defineMAXLEN100typedefstruct{charop;intlevel;}opt;typedefstruct//定义操作符栈{optst[MAXLEN];inttop;}op_stack

4、;typedefstruct//定义值栈{doubleD[MAXLEN];inttop;}D_stack;//--------对栈操作的定义-------------optpeek(op_stack*s)//定义看栈顶函数{opterror=;if(s->top>=0)returns->st[s->top];elsereturnerror;}标准文案实用文档intIsEmpty(op_stack*s)//定义判断栈空的函数{if(s->top<0)return0;elsereturns->st[s->top].op;

5、}charpush(op_stack*s,optc)//定义入栈函数{s->top++;s->st[s->top]=c;returnc.op;}optpop(op_stack*s)//定义出栈函数{opti;opterror=;if(s->top>=0){i=s->st[s->top];s->st[s->top].op='';s->top--;returni;}elsereturnerror;}voidclear(op_stack*s)//定义初始化栈{s->top=-1;}//-----------------

6、------------definethevaluestack-----------------------doubleDpeek(D_stack*s)//定义看栈顶函数{if(s->top>=0)returns->D[s->top];elsereturn0;}标准文案实用文档intDIsEmpty(D_stack*s)//定义判断栈空的函数{if(s->top<0)return0;elsereturn(int)(s->D[s->top]);}doubleDpush(D_stack*s,doublec)//定义入栈函

7、数{s->top++;s->D[s->top]=c;returnc;}doubleDpop(D_stack*s)//定义出栈函数{doublei;if(s->top>=0){i=s->D[s->top];s->D[s->top]='';s->top--;returni;}elsereturn0;}voidDclear(D_stack*s)//定义初始化栈{s->top=-1;}doublecalval(char*exp){op_stackos;//定义两个栈D_stackds;chartmp[MAXLEN]=;i

8、nti=0,leng;doubledtmp,dpoptmp;optA=;optR=;optM=;标准文案实用文档optD=;optB=;optMo=;clear(&os);Dclear(&ds);//-----定义初始化结束-----while(*exp!=''){while(*exp>='0'&&*exp<='9'

9、

10、*exp=='.')

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。