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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计魔王语言.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计魔王语言.docx

1、数据结构课程设计魔王语言山东理工大学计算机学院课 程 设 计(数据结构)班 级姓 名学 号指导教师二七 年 七 月 二十 日课程设计任务书及成绩评定课题名称魔王语言解释、题目的目的和要求: 设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题。通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。、设计

2、进度及完成情况日 期内 容7.2-7.4熟悉设计任务,查阅有关文献资料,确定所采用的数据结构,初步制定解决问题的方法,完成课程设计说明书内容1-3部分。7.57.10选择合适的存储结构,明确解决问题的算法,上机编写并调试源程序。7.117.12整体调试程序并记录调试中的问题,完成课程设计说明书第4-7部分。7.13演示设计成果,考核成绩。整理课程设计说明书,上午11时,由学习委员交课程设计说明书(计算机科学系9#213或直接交给指导教师)、主要参考文献及资料1 严蔚敏、吴伟民主编,数据结构(C语言版),清华大学出版社,2002。2 殷人昆等著,数据结构(C+版),清华大学出版社,2001。3

3、金远平著,数据结构(C+描述),清华大学出版社,2005。4 许卓群等著,数据结构与算法,高等教育出版社,2004。5 Frank M.Carrano等著, 数据结构与+高级教程,清华大学出版社,2004。6 严蔚敏、吴伟民著,数据结构习题集(C语言版),清华大学出版社。、成绩评定:设计成绩: (教师填写)指导老师: (签字)二七年七月二十日目 录第一章 概述.1第二章 系统分析.2第三章 系统设计.3第四章 程序设计流程图.7第五章 源程序清单.9第六章 调试过程中的问题及系统测试情况.13第七章 结束语.14第一章 概述1.1本课程设计意义 课程设计是实践性教学中的一个重要环节,它以某一课

4、程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程进行更全面的学习和应用,理解和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。第二章 系统分析1.1主要功能:魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听懂,但他的语言是可逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由

5、人的语言逐步抽象上去的: - 1)a- (B1)(B2).(Bm) 2)(op1)(p2).(pn)-o(pn)o(p(n-1).o(p1)o -在这两种形式中,从左到右均表示解释.试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话. 1.2基本要求: 用下述两条具体规则和上述规则形式(2)实现.设大写字母表示魔王语言的词汇;小写字母表示人的语言的词汇;希腊字母表示可以用大写字母或小写字母代换的变量.魔王语言可含人的词汇. 1) B - tAdA 2) A - sae第三章 系统设计功能模块层次结构图: 数据结构的名称及描述:(1)栈:ADT Stack数据对象:D=ai|ai Elem

6、set,i=1,2,n, n=0数据关系:R1=|ai-1,ai D,i=2,n 约定an端为栈顶,a1端为栈底。基本操作: Initstack(&s)操作结果:构造一个空栈s。 Destroystack(&s)初始条件:栈s已存在。操作结果:栈s被取消。 Clearstack(&s)初始条件:栈s已存在。操作结果:将s清为空栈。 Stackempty(s)初始条件:栈s已存在。操作结果:若栈s为空栈,则返回TRUE,否则FALSE。 Stacklength(s)初始条件:栈s已存在。操作结果:返回s的元素个数,即栈的长度。 Gettop(s,&e)初始条件:栈s已存在且非空。操作结果:用e返

7、回s的栈顶元素。 Push(&s,e)初始条件:栈s已存在。操作结果:插入元素e为新的栈顶元素。 Pop(&s,&e)初始条件:栈s已存在且非空。操作结果:删除s的栈顶元素,并用e返回其值。 Stacktraverse(s,visit()初始条件:栈s已存在且非空操作结果:从栈底到栈顶依次对s的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。ADT stack栈的顺序存储表示:#define STACK_INIT_SIZE 100; /存储空间初始分配量#define STACKINCREMENT 10; /存储空间分配增量Typedef struct SElemtyp

8、e *base; /在栈构造之前和销毁之后,base的值为NULL SElemtype *top; /栈顶指针 Int stacksize; /当前已分配的空间,以元素为单位Sqstack;(2)队列:ADT queue数据对象:D=ai|ai Elemset,i=1,2,n, n=0数据关系:R1=|ai-1,ai D,i=2,n 约定其中a1端为队列头,an端为队列尾。基本操作:Initqueue(&q) 操作结果:构造一个空队列q。Destroyqueue(&q) 初始条件:队列q已存在。 操作结果:队列q被销毁,不再存在。Clearqueue(&q) 初始条件:队列q已存在。 操作结果

9、:将q清空为空队列。Queueempty(q) 初始条件:队列q已存在。 操作结果:若队列q为空队列,则返回TRUE,否则FALSE。Queuelength(q) 初始条件:队列q已存在。 操作结果: 返回q的元素个数,即队列的长度。Gethead(q,&e) 初始条件:q为非空队列。 操作结果: 用e返回q的队头元素。Enqueue(&q,e) 初始条件:队列q已存在。 插入元素e作为q的队尾元素。Dequeue(&q,&e) 初始条件:q为非空队列。 操作结果: 删除q的队头元素,并用e返回其值。Queuetraverse(q,visit() 初始条件:队列q已存在且非空。 操作结果: 从

10、队头到队尾,依次对q的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。ADT Queue队列的链式存储结构:Typedef struct qnode Qelemtype data; Struct qnode *next;qnode,*queueptr;Typedef struct Queueptr front; /对头指针 Queueptr rear; /队尾指针linkqueue; 第四章 程序设计流程图(1)程序开始先由用户输入一种规则使用cin和cout函数。(2)接着程序再读入想要翻译的魔王语言。(3)程序对输入的规则进行翻译,翻译成人类语言。(4)对魔王语言进

11、行翻译,首先用POP()函数把魔王语言每一个字符读出。(5)再对字符进行筛选,符合输入规则的立即翻译。保存至transl中。(6)对于括号中的字符,即人类语言。先把括号中的字符全部出栈,保存至link中。(7)按规则把队列中的字符串进行翻译,保存至transl中。(8)依次执行,直到翻译完所有字符串。程序设计流程图如下:第五章 源程序清单程序清单如下:魔王.cpp/*-定义头文件-*/#include#include#include/*-定义全局变量-*/int top=0;int find=0;/top=0;char transl200;char leag200;char link100;i

12、nt rear=1;/rear=1;/*-MAIN()主函数-*/int main() char pop(); /定义出栈函数 char ml2200; /定义两个规则,把它们存放到ml中 coutendl; cout * 魔王语言程序设计 * endl; cout * endl; cout * endl; cout * 本程序可以翻译魔王语言且按以下两条形式规则由人 * endl; cout * * endl; cout *的语言逐步抽象上去: * endl; cout * * endl; cout1234. * endl; cout * * endl; cout321 * endl; co

13、ut * * endl; cout * 下面只输入2个第一种形式的规则,且后输入的可以嵌* endl; cout * * endl; cout *套已输入的规则。 * endl; cout * * endl; cout * endl; cout * endl; cout1234. / (123)321 /下面只输入2个第一种形式的规则,且后输入的可以嵌套已输入的规则 / /*开始输入规则A和B,A比B先输入,再输入B,这样B就可以嵌套A*/ cout以下请开始翻译:endl; cout请先输入一组形式规则:endl; cout; cinml0; cout; cinml1; coutendl;/

14、*输入魔王语言,其规则为大写为魔王语言,只限定A和B(暂时),小写为人类语言,输入时用括号括起来*/ coutleag; char temp100; /定义一个缓冲区,存放B的翻译 int sizeA=0; /定义A的长度 sizeA=strlen(ml0); int wh=0; /定义缓冲区中的位置变量 for(int i=0;ml1i!=0;i+) /开始翻译B if(ml1i=A) /如果嵌套了A /couthere is doing!; for(int n=0;nsizeA;n+,wh+) tempwh=ml0n; /翻译至缓存区 else tempwh=ml1i; /如果不是A则原样

15、写入 wh+; tempwh=0; /为缓存区加上结束符 strcpy(ml1,temp); /把缓存区中的串给ml1 int sizeB=0; /定义B的长度 sizeB=strlen(ml1); int length; length=strlen(leag); /取得魔王语言的长度 int ch; /定义一个变量保存字符 int a; int b; /*-开始翻译魔王语言,并把结果存至transl中-*/ for(int t=0;tlength;t+) ch=pop(); switch(ch) case A: /如果是A的话 for(a=0;asizeA;a+,find+) translf

16、ind=ml0a; break; case B: /如果是B的话 for(b=0;bsizeB;b+,find+) translfind=ml1b; break; case (: /但ch=(时,把括号中的小写字母保存至link中 ch=pop(); link0=ch; /先把第一个字符存入,后面的从link1开始 while(ch!=) ch=pop(); linkrear=ch; /记得rear的初值为1 rear+; /由于while循环的原因,在link队列中多加了一个右括号字符,且rear指针向后多移了2个单位 /故使rear减2 rear=rear-2; translfind+=l

17、ink0; for(rear;rear!=0;rear-) translfind+=linkrear; translfind+=link0; /为了使后面的翻译可行话,得把rear还原为初值,即rear=1 rear=1; break; default:break; /switch结束/*-翻译魔鬼语言结束,结果已存至transl中-*/ /for结束 cout经过翻译,魔王想表达的语言是:; /输出得到的翻译语言 coutendl; couttransl; coutyui回车B-tuAsdA回车魔王语言:BABA(fqwerjijilo)ABAB输出结果:翻译输出:结果正确。第七章 结束语经

18、过几天和同学进行的程序设计合作,使我明白了做一件事情如果靠团结的力量是很容易完成的。再次感谢指导我们的老师,给了我们莫大的帮忙,使我们的工作事半功倍。本次任务完成情况良好,能够完好的解决题目所给的要求,达到了程序设计的输入、输出、有穷性、可行性、确定性的程序要求。参考文献:1 严蔚敏、吴伟民主编,数据结构(C语言版),清华大学出版社,2002。2 殷人昆等著,数据结构(C+版),清华大学出版社,2001。3 金远平著,数据结构(C+描述),清华大学出版社,2005。4 许卓群等著,数据结构与算法,高等教育出版社,2004。5 Frank M.Carrano等著, 数据结构与+高级教程,清华大学出版社,2004。6 严蔚敏、吴伟民著,数据结构习题集(C语言版),清华大学出版社。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1