数据结构课程设计魔王语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东理工大学计算机学院课程设计
(数据结构)
班级
姓名
学号
指导教师
二○○七年七月二十日
课程设计任务书及成绩评定
课题名称魔王语言解释
Ⅰ、题目的目的和要求:
设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题。通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。
通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和
严格的训练。
Ⅱ、设计进度及完成情况
日期内容
7.2-7.4 熟悉设计任务,查阅有关文献资料,确定所采用的数据结构,初步制定解决问题的方法,完成课程设计说明书内容1-3部分。
7.5~7.10 选择合适的存储结构,明确解决问题的算法,上机编写并调试源程序。
7.11~7.1
2 整体调试程序并记录调试中的问题,完成课程设计说明书第4-7部分。
7.13 演示设计成果,考核成绩。整理课程设计说明书,上午11时,由学习委员交课程设计说明书(计算机科学系9#213或直接交给指导教师)
Ⅲ、主要参考文献及资料
[1]严蔚敏、吴伟民主编,《数据结构》(C语言版),清华大学出版社,2002。
[2] 殷人昆等著,《数据结构》(C++版),清华大学出版社,2001。
[3] 金远平著,《数据结构》(C++描述),清华大学出版社,2005。
[4]许卓群等著,《数据结构与算法》,高等教育出版社,2004。
[5] Frank M.Carrano等著, 《数据结构与C++高级教程》,清华大学出版社,2004。
[6]严蔚敏、吴伟民著,《数据结构习题集》(C语言版),清华大学出版社。Ⅳ、成绩评定:
设计成绩:(教师填写)
指导老师:(签字)
二○○七年七月二十日
目录
第一章概述 (1)
第二章系统分析 (2)
第三章系统设计 (3)
第四章程序设计流程图 (7)
第五章源程序清单 (9)
第六章调试过程中的问题及系统测试情况 (13)
第七章结束语 (14)
第一章概述
1.1本课程设计意义
课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程进行更全面的学习和应用,理解和掌握课程的相关知识。《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
第二章系统分析
1.1主要功能:
魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听懂,但他的语言是可逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:
-----------------------------------------------------------
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={a[i]|a[i] ∈ Elemset,i=1,2,…,n, n>=0} 数据关系:R1={|a[i-1],a[i] ∈ D,i=2,…,n} 约定a[n]端为栈顶,a[1]端为栈底。 基本操作:
Initstack(&s) 操作结果:构造一个空栈s 。 Destroystack(&s) 初始条件:栈s 已存在。 操作结果:栈s 被取消。 Clearstack(&s) 初始条件:栈s 已存在。 操作结果:将s 清为空栈。
调用Gzcin ()输入规则
调用Mycin ()输入语
言
调用Change ()进行翻
译
在屏幕输出 输入一组规则
输入魔王语言
根据用POP ()
出栈的字符进行判断: A :大写字符
B :左括号
按规则进行翻译 调用Link ()把括号中的字符全部进队列,按规则翻译
Stackempty(s)
初始条件:栈s已存在。
操作结果:若栈s为空栈,则返回TRUE,否则FALSE。
Stacklength(s)
初始条件:栈s已存在。
操作结果:返回s的元素个数,即栈的长度。
Gettop(s,&e)
初始条件:栈s已存在且非空。
操作结果:用e返回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{
SElemtype *base; //在栈构造之前和销毁之后,base的值为NULL
SElemtype *top; //栈顶指针
Int stacksize; //当前已分配的空间,以元素为单位
}Sqstack;
(2)队列:
ADT queue{