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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(数据结构算术表达式求解.doc)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数据结构算术表达式求解.doc

1、 滨江学院 数据结构课程设计 题 目 算术表达式的求解 院 系 计算机系 专 业 学生姓名 学 号 指导教师 李燕 二O一六 年 六 月十日 目 录 1.前言 1 1.1课题内容及要求 1 1.2选题目的及意义 1 2.系统分析 2 2.1问题描述 2 2.2运算符的优先级分析: 2 2.3错误提示分析: 2 3.系统概要设计 3 3.1系统总体架构设计 3 3.2系统模块的设计 3

2、 4.系统详细设计 4 4.1数据的存储设计与描述: 4 4.2详细的优先级关系: 4 4.3具体的操作集合: 4 5.程序实现 6 6.程序测试 13 6.1正确的结果 13 6.2错误1 13 6.3错误2 13 6.4错误3 13 7.收获及体会: 15 参考文献: 15 II 1.前言 1.1课题内容及要求 题目39:算术表达式的求解 问题描述:给定一个算术表达式,通过程序求出最后的结果。 基本要求: 从键盘输入要求解的算术表达式; 采用栈结构进行算术表达式的求解过程; 能够判断算术表达式正确与否; 对于错误表达式给出提示; 对于正

3、确的表达式给出最后的结果; 1.2选题目的及意义 ⑴进一步熟悉和使用栈的基本操作,如栈的初始化,进栈,出栈的特性。 ⑵学习在实际生活中使用栈来解决问题。 2.系统分析 2.1问题描述 要正确计算表达式的值,必须要正确的解释表达式。 首先解释算术表达式的运算规则,分为以下三点: ⑴先乘除后加减; ⑵从左往右进行计算; ⑶有括号的,先算括号内的; 2.2运算符的优先级分析: 任何一个表达式都是由运算符,操作数和界限符组成的。 这里把运算符,界限符统称为算符。设两个操作符分别为op1和op2

4、 为实现运算符的优先法则,优先关系会出现三种情况,op1的优先级高于op2的优先级,op1的优先级等于op2的优先级,op1的优先级小于op2的优先级。 2.3错误提示分析: 对于输入错误的,比如出现了表达式以外的非法字符,没有按照正确格式进行输入。 系统会给出提示。 3.系统概要设计 3.1系统总体架构设计 算术表达式的求解 栈 模块 运算模块 定义栈的结构 初始化栈 入栈 出栈 取栈顶的元素 判断优先级 判断是否为运算符 进行基本运算函数 运算函数 3.2系统模块的设计 为

5、了更好的服务,结合用户的需求,有如下的模块设计: 程序主要包括三个模块: ⑴主函数设计模块 int main(){ 函数体 } ⑵栈模块: 一些本程序需要的操作,如初始化栈,定义栈,出栈,入栈,取栈顶元素。 ⑶运算模块: 对一些优先级的定义,以及基本的算术运算。 4.系统详细设计 4.1数据的存储设计与描述: 为实现运算符的优先算法,可以用两个栈:运算符栈OPTR,操作数栈OPND。 四则运算表达式算法的基本思想是: ⑴首先置操作数栈OPND为空栈,表达式起始符“#”为OPTR栈的栈底元素。 ⑵依次读入表达式中的每个字符,是操作数则进栈OPND,是运算符就和

6、OPTR栈的栈顶元素比较后,依据相应的优先权进行操作,直至整个表达式求值完毕(标志是两个运算符都为“#”)。 4.2详细的优先级关系: Op2 Op1 + - * / ( ) # + > > < < < > > - > > < < < > > * > > > > < > > / > > > > < > > ( < < < < < = ) > > > > > > # < < < < < = 4.3具体的操作集合: 栈的设计: typed

7、ef struct{ ElemType data[StackSize]; int top; } SeqStack; void Init(SeqStack *s); //初始化栈 int IsFull(SeqStack *s); //判断栈是否已满 int IsEmpty(SeqStack *s); //判断栈是否是空 void Push(SeqStack *s,ElemType x); //进行入栈操栈 ElemType Pop(SeqStack *s); //进行出栈操作 El

8、emType getTop(SeqStack *s); //提取栈顶元素 函数运算: int Advan(int t1,int t2); //判断符号的优先级 int In(int c); //判断c是否为运算符 int Oprea(int a,int theta,int b); //进行四则运算 int EvaluteExpression(); //进行算术表达式求值 5.程序实现 //

9、stack.h 中 #ifndef _STACK_H #define _STACK_H #define StackSize 100 #define MaxLength 100 typedef int ElemType; typedef struct{ ElemType data[StackSize]; int top; } SeqStack; void Init(SeqStack *s); //初始化栈 int IsFull(SeqStack *s); //判断栈是否已满 int IsEmpty(SeqStac

10、k *s); //判断栈是否是空 void Push(SeqStack *s,ElemType x); //进行入栈操栈 ElemType Pop(SeqStack *s); //进行出栈操作 ElemType getTop(SeqStack *s); //提取栈顶元素 #endif //stack.c中 #include "stack.h" #include #include void Init(SeqStack *s) //初始化? {

11、 s->top=-1; } int IsFull(SeqStack *s) //判断栈是否已满 { return s->top==StackSize-1; } int IsEmpty(SeqStack *s) //判断栈是否是空 { return s->top==-1; } void Push(SeqStack *s,Elem

12、Type x) //进行入栈操栈 { if(IsFull(s)){ printf("栈已经溢出。"); exit(1); } s->top++; //栈顶指针加1 s->data[s->top]=x; //栈顶为新插入的值,data是数组,s->top数字 } ElemType Pop(SeqStack *s) //进行出栈操作 {

13、 if(IsEmpty(s)){ printf("栈是空的"); exit(1); } return s->data [s->top--]; //先删除栈顶的元素,然后指针减一 } ElemType getTop(SeqStack *s) //提取栈顶元素 { if(IsEmpty(s)){ printf("栈是空的"); exit(1); } return s->data [s->t

14、op]; } //operstack.h 中 #ifndef _OPERSTACK_H #define _OPERSTACK-H int Advan(int t1,int t2); //判断符号的优先级 int In(int c); //判断c是否为运算符 int Oprea(int a,int theta,int b); //进行四则运算 int EvaluteExpression(); //进行算术表达式求值 #endif //operstack.c 中 #include "stac

15、k.h" #include #include #include "operstack.h" int Advan(int t1,int t2) //判断符号的优先级 { int f; switch(t2) { case '+': //若t2符号是“+”“-” case '-': if(t1=='('||t1=='#') f='<'; else f='>'; break;

16、 case '*': //若t2符号是 *, /时 case '/': if(t1=='*'||t1=='/'||t1==')') f='>'; else f='<'; break; case '(': //若t2符号是(,此时应该优先级小继续输入,而不进行运算 if(t1==')'){ printf("ERROR 括号不匹配\n"); exit(0); } else f='<'; break;

17、 case ')': //若t2符号是),此时一个括号已经完整,应该进行运算 switch(t1) { case '(':f='='; break; case '#':printf("ERROR 缺少左括号\n"); exit(0); default:f='>'; } break; case '#': //若t2取出时是#,表示已经要计算最后一个表达式了 switch(t1) { case '#':f='='; br

18、eak; case '(':printf("ERROR 缺少右括号\n"); exit(0); default:f='>'; } } return f; } int In(int c) //判断c是否为运算符 { switch(c) { case '+': case '-': case '*': case '/': case '(': case ')': case '#':return 1; default :return 0; }

19、} int Oprea(int a,int theta,int b) //进行四则运算 { int c; switch(theta) { case '+': c=a+b; break; case '-': c=a-b; break; case '*': c=a*b; break; case '/': c=a/b; break; } return c; } int EvaluteExpression() //进行算术表达式求值 {

20、SeqStack OPTR,OPND; //构建两个栈,一个是放操作符,一个是放数据 int a,b,d,x,theta; char c; //存放键盘接收的字符 char z[6]; //存放整数串 int i; Init(&OPTR); //初始化运算符栈 Push(&OPTR,'#'); //#入栈,#是表达式结束的标志 Init(&OPND);

21、 //初始化数据栈 c=getchar(); //从键盘读入下一个字符到c x=getTop(&OPTR); //x赋值为运算符栈顶元素 while(c!='#'||x!='#'){ //当读入两个字符都为#时,则停止,返回最后的 // 结果X的值 ,否则继续进行运算 if(In(c)){

22、 //是运算符 switch(Advan(x,c)) { case '<':Push(&OPTR,c); //优先级低 ,继续进行输入 c=getchar(); break; case '=':x=Pop(&OPTR); //脱括号并计算下一个值 c=getchar(); break; case '>':theta=Pop(&OPTR); //优先级高,此时进行运算,从操 //作栈中取出一个运算符 b=Pop(&O

23、PND); //从数据栈中取出两个数 a=Pop(&OPND); Push(&OPND,Oprea(a,theta,b)); // 然后通过这两个数进行运算 } }else if(c>='0'&&c<='9'){ //是数字 i=0; do{ z[i]=c; i++; c=getchar(); }while(c>='0'&&c<='9'); z[i]=0;

24、//整数串结束 d=atoi(z); //将字符串转化为整数放入d中 Push(&OPND,d); //一个整数入到数据栈中 }else{ //两者以外显然不可能,出错 printf("ERROR 出现了非法的字符,表达式不符合格式\n"); exit(0); } x=getTop(&OPTR); } x=getTop(&OPND); return x; } 6

25、程序测试 6.1正确的结果 6.2错误1 6.3错误2 6.4错误3 7.收获及体会: 该程序经过调试已经能够运行,并且能够正确的输出答案以及错误的提示。 通过本次数据结构课程设计,能够更加深刻的体会栈的特点,更熟悉栈的相关操作,以及如何运用栈的相关知识解决生活中的实际问题。 参考文献: [1] 李文书.数据结构与算法应用实践教程.北京大学出版社.2012.02 [2] 戴文华 赵君喆.数据结构项目实训.人民邮电出版社.2

26、012.09 [3] 李业丽 程晓锦 齐亚莉.数据结构实验教程(基于c语言).清华大学出版社.2014.04 目 录 第一章 总论 1 1.1项目名称与承办单位 1 1.2研究工作的依据、内容及范围 1 1.3编制原则 3 1.4项目概况 3 1.5技术经济指标 5 1.6结论 6 第二章 项目背景及建设必要性 8 2.1项目背景 8 2.2建设的必要性 9 第三章 建设条件 11 3.1项目区概况 11 3.2建设地点选择 错误!未定义书签。 3.3项目建设条件优劣势分析 错误!未定义书签。 第四章 市场分析与销售方案

27、 13 4.1市场分析 13 4.2营销策略、方案、模式 14 第五章 建设方案 15 5.1建设规模和产品方案 15 5.2建设规划和布局 15 5.3运输 18 5.4建设标准 18 5.5公用工程 20 5.6工艺技术方案 21 5.7设备方案 21 5.8节能减排措施 24 第六章 环境影响评价 25 6.1环境影响 25 6.2环境保护与治理措施 26 6.3评价与审批 28 第七章 项目组织与管理 29 7.1组织机构与职能划分 29 7.2劳动定员 29 7.3经营管理措施 30 7.4技术培训 30 第八章 劳动、安全、卫生与消防 31

28、 8.1编制依据及采用的标准 31 8.2安全卫生防护原则 31 8.3自然灾害危害因素分析及防范措施 32 8.4生产过程中产生的危害因素分析及防范措施 32 8.5消防编制依据及采用的标准 34 8.6消防设计原则 35 8.7火灾隐患分析 35 8.8总平面消防设计 35 8.9消防给水设计 36 8.10建筑防火 36 8.11火灾检测报警系统 37 8.12预期效果 37 第九章 项目实施进度 38 9.1实施进度计划 38 9.2项目实施建议 38 第十章 项目招投标方案 40 10.1招标原则 40 10.2项目招标范围 40 10.3投标、

29、开标、评标和中标程序 40 10.4评标委员会的人员组成和资格要求 42 第十一章 投资估算和资金筹措 43 11.1投资估算 43 11.2资金筹措及使用计划 45 第十二章 财务评价 47 12.1费用与效益估算 47 12.2财务分析 48 12.3不确定性分析 49 12.5财务评价结论 50 第十三章 建设合理性分析 51 13.1产业政策符合性分析 51 13.2清洁生产符合性分析 51 13.3规划符合性分析 51 13.4项目建设环保政策符合性分析 51 13.5环境承载性分析 51 13.6结论 52 第十四章 结论与建议 53 19

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服