欢迎来到天天文库
浏览记录
ID:13103496
大小:147.00 KB
页数:10页
时间:2018-07-20
《利用栈求表达式的值》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
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'/'
此文档下载收益归作者所有