已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程题目:数据结构试验学院:班级:姓名:学号:实验题目:栈的应用实验内容:算术表达式求值实验目的:掌握栈和队列的概念及工作原理,运用其原理完成实验题目中的内容。实验要求:为了使学生更好的掌握与理解课堂上老师所讲的概念与原理,实验前每个学生要认真预习所做的实验内容及编写源程序伪码(写在纸上及盘中均可)实验学时:4学时设计原理:任何一个表达式都是有操作数、运算符和界限符组成的。我们把运算符和界限符统称为算符,它们构成的集合命名为OP。根据简单算术表达式的运算规则,在运算的每一步中,任意两个相继出现的算符a和b之间的优先关系至多是下面三种关系之一:ab a的优先权大于b为实现算符优先算法,可以使用两个工作栈。一个为,用以寄存预算符;另一个为,用以寄存操作数或运算结果。算法基本思想:首先置操作数栈为空栈,表达式起始运算符“”为运算符栈的基本元素;依次读入表达式中每个字符,若是操作数则进栈,若是运算符则和栈的栈顶运算符比较优先权执行相应操作,直至整个表达式求值完毕(即栈的栈顶元素和当前读入的字符均为“”)。详细程序清单及注释说明:#include #include #include #include #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define STACK_INIT_SIZE 100/初始量分配#define STACKINCREMENT 10/存储空间的分配增量typedef structchar *base;char *top;int stacksize;sqstack;int initstack(sqstack &s)/创造一个空栈s.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char);if(!s.base) exit(OVERFLOW);s.top=s.base;s.stacksize=STACK_INIT_SIZE;return OK;int push(sqstack &s, char e)/插入为新的栈顶元素if(s.top-s.base=s.stacksize)s.base=(char *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(char);if(!s.base) exit(OVERFLOW);s.top=s.base+s.stacksize;s.stacksize+=STACKINCREMENT;*s.top+=e;return OK;int pop(sqstack &s,char &e)/若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERRORif(s.top=s.base) return ERROR;e=*-s.top;return OK;int gettop(sqstack s)char e;if(s.top=s.base) return ERROR;e=*(s.top-1);return e;char in(char getchar)if(getchar=# & getchar;break;case -:return ;break;case *:return ;break;case /:return ;break;case (:return ;break;case #:return ;break;if(optrchar=-)switch(getchar1)case +:return ;break;case -:return ;break;case *:return ;break;case /:return ;break;case (:return ;break;case #:return ;break;if(optrchar=*)switch(getchar1)case +:return ;break;case -:return ;break;case *:return ;break;case /:return ;break;case (:return ;break;case #:return ;break;if(optrchar=/)switch(getchar1)case +:return ;break;case -:return ;break;case *:return ;break;case /:return ;break;case (:return ;break;case #:return ;break;if(optrchar=()switch(getchar1)case +:return ;break;case -:return ;break;case *:return ;break;case /:return ;break;case (:return ;break;case -:return ;break;case *:return ;break;case /:return ;break;case ):return ;break;case #:return ;break;if(optrchar=#)switch(getchar1)case +:return ;break;case -:return ;break;case *:return ;break;case /:return ;break;case (:return 47) x=atoi(&x); if(z47) z=atoi(&z); switch(y) case +: return x+z; break; case -: return x-z;break; case *: return x*z;break; case /: return x/z;break; char EvaluateExpression()char theta;char a,b,c;sqstack OPTR;sqstack OPND;initstack(OPTR);push(OPTR,#);initstack(OPND);c=getchar();while(c!=# | gettop(OPTR)!=#)if(!in(c)push(OPND,c);c=getchar();elseswitch(precede(gettop(OPTR),c)case :pop(OPTR,theta);pop(OPND,b);pop(OPND,a);push(OPND,operate(a,theta,b);break;return gettop(OPND);main()loop:char a;printf(输入算式:(输入#结束)n);int value;value=(int)EvaluateExpression();printf(计算结果为:%dn,value);printf(继续计算? (输入1继续/输入0结束);scanf(%d,&a);if(a=1)goto loop;elsereturn ERROR;运行与测试及结果:试验中所遇到的问题及解决办法:实验当中遇到了程序显示结果和实际运算结果不相符的情况。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年宁夏单招装备制造大类增材制造基础题
- 2026重庆永川区中山路街道办事处中山路社区招聘全日制公益性岗位人员1人备考题库及1套完整答案详解
- 2026广东广州南方投资集团有限公司社会招聘49人备考题库及答案详解(夺冠)
- 2026福建南平武夷福森农林科技有限公司直聘人员招聘9人备考题库附答案详解ab卷
- 2026中煤集团山西有限公司所属煤矿机电副总工程师招聘3人备考题库附答案详解(巩固)
- 2026湖北教师招聘统考十堰市房县招聘30人备考题库有完整答案详解
- 2026安徽皖能环境科技有限公司社会招聘1人备考题库有完整答案详解
- 2026广东深圳市眼科医院招聘2人备考题库及答案详解(各地真题)
- 2026湖北武汉市三甲综合性医院招聘备考题库及答案详解(名师系列)
- 2026安徽省皖能聚合智慧能源有限公司所属子公司社会招聘2人备考题库及一套答案详解
- 2026山东菏泽生物医药职业学院招聘工作人员120人农业考试参考题库及答案解析
- 3.4 我们来造“环形山”课件(内嵌视频) 2025-2026学年教科版科学三年级下册
- 广东省茂名电白区七校联考2026届中考一模数学试题含解析
- 直播基地规划建设方案报告
- 公交车驾驶员的职业素养及规范
- (正式版)HGT 20593-2024 钢制化工设备焊接与检验工程技术规范
- JJG 638-2015液压式振动试验系统
- 泌尿系损伤-教案-外科课件
- 创意综艺风脱口秀活动策划PPT模板
- Infiniti系列多参数生物反馈仪使用说明书(共73页)
- 心内一科科室质量与安全管理小组工作记录(共27页)
评论
0/150
提交评论