ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:254.37KB ,
资源ID:15347237      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15347237.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(利用栈求表达式的值文档格式.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

利用栈求表达式的值文档格式.docx

1、int change_opnd(int operate):将字符型操作码转换成优先级int push_opnd(int operate):int pop_opnd():将操作码弹出堆栈int caculate(int cur_opnd):简单计算+,-,*,/double pop_num():弹出操作数源代码:#include stdlib.hstring.hmath.h#define MAXSIZE 100#define N 1000int i=0;/表达式数typedef struct expression/表达式结构long double result;char expstrMAXSIZ

2、E;expression;expression exprN;/表达式的一个整体容器stypedef struct/操作码栈定义char codeMAXSIZE;int top;opnd;typedef struct/操作数栈定义double dateMAXSIZE;num;/opnd栈操作:void initstack(opnd *op)/初始化栈op-top=-1;int empty_opnd(opnd *op)/判空if(op-top=-1)return 0;else return 1;int push_opnd(opnd *op,char co)/压栈top=MAXSIZE-1)prin

3、tf(The opnd stack is full.);top+;codeop-top=co;return 1;char pop_opnd(opnd *op)/出栈char a=0;error: stack is empty.return a;a=op-top;top-;char get_opnd(opnd *op)/查看栈顶elsereturn op-/num栈操作:void initstack(num *nu)nu-int empty_num(num *nu)/判空if(nu-int push_num(num *nu,double da)/压栈datedatenu-top=da;doubl

4、e pop_num(num *nu)/出栈double a=a=nu-double get_num(num *nu)/查看栈顶top!=-1)return nu-/结束栈定义操作/函数操作:int change_opnd(char code)/将字符型操作码转换成优先级,非表达式字符反回-2switch(code)case =:break;)return 2;+return 3;-*return 4;/(/操作码级别=0;1234567890. return -1;/操作数级别=-1;default: return -2;/其它符号级别=-2char procede(char top,char

5、 code)/处理操作码,判断栈的操作if(change_opnd(code)=0)/“(”入栈return (if(change_opnd(code)=2&change_opnd(top)=0)/“(”和“)”同时出现,“(”出栈,“)”不入栈if(change_opnd(code)/入栈double change_num(char str)/数字字符串转成double型数字char *s=str;int p=1,q=0;/p=小数点前位数,q=小数点后位数char d=.,z=0double da=0,p1;if(strstr(str,d)=0)/判断是否有小数点p=strlen(str)

6、;if(strstr(str,d)=str)/没有输入小数点前的数,如“.032”p=1;q=strlen(str)-1;strcpy(str,strcat(z,str);p=strstr(str,d)-str;q=strlen(str)-p-1;for(int i=0;ip;i+)/小数点前的各位数乘以各自的阶数,然后叠加:123=1*100+2*10+3*1da=da+(int)stri-48)*pow(10,p-i-1);for(int j=0;j0)n表达式只能以“数字”或“(”开头。if(change_opnd(*p)=-2)n表达式%c为非法字符。,*p);/合法刚跳到下一个字符p=p+1;if(change_opnd(*p)=-2)/非法字符判断if(change_opnd(*p)=0)/前一个字符只能是+、-、*、/、(if(change_opnd(*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1