已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 生 实 验 报 告学 院: 软件与通信工程学院 课程名称: 数据结构 专业班级: 电信141班 姓 名: 学 号: 014 学生实验报告(1)学生姓名学号同组人:无实验项目栈的应用之表达式求值必修 选修 演示性实验 验证性实验 操作性实验 综合性实验实验地点H113实验仪器台号 指导教师黄淑英实验日期及节次一、实验综述1、实验目的及要求掌握栈在表达式求值算法中的应用。2、实验仪器、设备或软件电脑二、实验过程(实验步骤、记录、数据、分析)打开电脑,打开Microsoft visual C+6.0、新建、Win32 Conosle Application建一个空工程文件、选择源文件、开始编写程序 #include#include#include#include #include #include #include #include #include const char oper7 = +, -, *, /, (, ), = ;/建立一个一维数组放置运算符#define MAXSIZE 100#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef char SElemType; typedef struct StackNode/创建一个单链表Status data;struct StackNode *next; StackNode, *LinkStack;Status InitStack(LinkStack &S)/初始化 S=NULL;return OK;Status StackEmpty(LinkStack S) if (!S)return true;return false;Status Push(LinkStack &S,SElemType e)/入栈StackNode *p;p=new StackNode;if (!p) return OVERFLOW;p-data=e;p-next=S;S=p;return OK;Status Pop(LinkStack &S,SElemType &e)/出栈StackNode *p;if (S=NULL)return ERROR;e=S-data;p=S;S=S-next;delete p;return OK;SElemType GetTop(LinkStack S) /取栈顶元素if (S!=NULL)return S-data;Status In(char ch) /判断ch是否为运算符for (int i = 0; i 7; i+) if (ch = operi) return true;return false;/判断运算符优先级char Precede(char theta1, char theta2) if (theta1 = ( & theta2 = ) | (theta1 = = & theta2 = =) return =;else if (theta1 = ( | theta1 = = | theta2 = ( | (theta1= + | theta1 = -) & (theta2 = * | theta2 = /) return ;char Operate(char first, char theta, char second) /计算两数运算结果switch (theta) case +:return (first-0)+(second-0)+48;case -:return (first-0)-(second-0)+48;case *:return (first-0)*(second-0)+48;case /:return (first-0)/(second-0)+48;return 0;/算术表达式求值的算符优先算法/设OPTR和OPND分别为运算符栈和操作数栈char EvaluateExpression()char ch;SElemType a,b,theta,x;LinkStack OPND,OPTR;InitStack(OPND);InitStack(OPTR);Push(OPTR,=);cinch;while(ch!=|GetTop(OPTR)!=)if(!In(ch)Push(OPND,ch);cinch;elseswitch(Precede(GetTop(OPTR),ch)case ch;break;case :Pop(OPTR,theta);Pop(OPND,b);Pop(OPND,a);Push(OPND,Operate(a,theta,b);break;case =:Pop(OPTR,x);cinch;break;return GetTop(OPND);/*int menu() int c;cout0-9以内的多项式计算endl;cout1.计算endl;cout0.退出n endl;coutc;return c;*/void main() while (1) switch (1/*menu()*/) case 1: cout 请输入要计算的表达式(操作数和结果都在0-9的范围内,以=结束): endl;int res=EvaluateExpression();cout计算结果为res-48endlendl;break;case 0:c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长沙碧桂园可行性研究报告
- 防蚊面料研究报告总结范文
- 风力发电项目可行性研究报告
- 高中数学创新题解析教案
- 高温尼龙项目可行性研究报告(参考模板范文)
- 高铁的可行性研究报告范文
- 2025年成都百万职工技能大赛(汽车维修工)备赛试题库(含答案)
- 2025年质量员之土建质量专业管理实务真题练习试卷B卷附答案
- 线上酒店代理协议书
- 房子贷款延期协议书
- 神经病理性疼痛的药物治疗
- 侨界领袖陈嘉庚(共33张PPT)
- 慢性胃炎病人的护理课件
- 职业病危害因素分类目录与职业禁忌症以及职业病目录对应表
- 《建筑结构平法识图》说课
- GB/T 8813-2020硬质泡沫塑料压缩性能的测定
- GB/T 25643-2010道路施工与养护机械设备路面铣刨机
- GB/T 20245.2-2013电化学分析器性能表示第2部分:pH值
- GB 17498.6-2008固定式健身器材第6部分:跑步机附加的特殊安全要求和试验方法
- FZ/T 61001-2019纯毛、毛混纺毛毯
- 真菌感染的高危因素
评论
0/150
提交评论