利用栈求表达式的值

利用栈求表达式的值

ID:13103496

大小:147.00 KB

页数:10页

时间:2018-07-20

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

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

1、数据结构课程设计姓名:王宗敏班级:软件1021111217班学号:1021111217目录:1.需求分析……………………………2.概要设计……………………………3.详细设计……………………………4.调试分析……………………………5.用户使用说明………………………6.测试结果……………………………利用栈求表达式的值,可供小学生作业,并能给出分数。1.需求分析任务:通过此系统可以实现如下功能:此系统能够输入一个表达式,并计算该表达式的值。可以根据计算结果给出分数。能供小学生进行简单的四则运算,此外这里特别强调括号的匹配!要求:根据以上功能说明,设

2、计运算信息,堆栈的存储结构,设计程序完成功能;2.概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。3.详细代码#include"string.h"#include"stdio.h"#include"conio.h"#definemaxsize100#include"ctype.h"typedefchardatatype;typedefstruct{datatypestack[maxsize];inttop;}seqstack;voidstackini

3、tiate(seqstack*s){s->top=0;}intstacknotempty(seqstacks){if(s.top<=0)return0;elsereturn1;}intstackpush(seqstack*s,datatypex){if(s->top>=maxsize){printf("堆栈已满无法插入!");return0;}else{s->stack[s->top]=x;s->top++;return1;}}intstackpop(seqstack*s,datatype*d){if(s->top<=0){printf(

4、"堆栈已空无数据元素出栈!");return0;}else{s->top--;*d=s->stack[s->top];return1;}}intstacktop(seqstacks,datatype*d){if(s.top<=0){printf("堆栈已空!");return0;}else{*d=s.stack[s.top-1];return1;}}voidexpiscorrect(charexp[],intn){seqstackmystack;inti;charc;stackinitiate(&mystack);for(i=0;i<

5、n;i++){if(exp[i]=='(')stackpush(&mystack,exp[i]);elseif((exp[i]==')')&&stacknotempty(mystack)&&stacktop(mystack,&c)&&c=='(')stackpop(&mystack,&c);elseif((exp[i]==')')&&!stacknotempty(mystack)){printf("右括号多余左括号!");return;}}if(stacknotempty(mystack))printf("左括号多余右括号!");el

6、seprintf("左右括号匹配正确!");}staticfloatans[50];staticintcount=0;staticintright=0;staticfloatyourresult[50];intpostexp(charexp[]){seqstackmystack;datatypex1,x2;inti;intj=0,ls;inttop=0;intisFalse=0;intisRead=0;charoprator='';stackinitiate(&mystack);for(i=0;exp[i]!='#';i++){if(is

7、digit(exp[i])){top=(int)(exp[i]-48);top*=10;}else{if(isRead==0){isRead++;top/=10;stackpush(&mystack,top);oprator=exp[i];top=0;}elseif(isRead==1){stackpush(&mystack,top);if(isRead==1){isRead++;stackpop(&mystack,&x2);}stackpop(&mystack,&x1);ls=x1;x1=x2;x2=ls;x1/=10;switch(opr

8、ator){case'+':{x1+=x2;break;}case'-':{x1-=x2;break;}case'*':{x1*=x2;break;}case'/'

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

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

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