- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
数据结构课程设计
学 院:信息科学与工程学院专 业:计算机科学与技术
2008年10月20 日
数据结构课程设计一、说明:
1、课程设计题目均选自《数据结构习题集》,请你根据所给页码及题目查阅相应内容,任选其一确定自己设计的题目;
2、题目一般分为基本要求和选做内容,选做内容将作为答优的基本要求;
3、课程设计的成绩分为两部分:系统演示+设计报告。
4、演示部分的检查在12教803室,在课程设计结束后一周。
5、时间:第8周周一无课时间,第8周周六、周日8:00-12:00,1:00-5:00,第9周周一无课时间。地点12教五楼机房。
二、题目:
P77: 0.3-海龟作图;
P80: 1.3-集合的并、交和差运算(或者1.4-长整数四则运算);P105: 2.9-迷宫问题;
P152: 5.7-表达式类型的实现;P153: 5.8-全国交通咨询模拟。
三、报告要求:完成以上实验内容并写出实验报告,报告应具有以下内容:1、实验内容
2、概要设计
3、详细设计
4、测试数据及程序运行情况
5、实验过程中出现的问题及解决方法
6、实验体会
四、实验报告要求全部为打印稿,格式统一(见附件实验报告格式),在程序演示检查完成后一并教给老师。
五、课程设计期间有问题,请到12教803室找王永燕,周劲老师。
1、实验内容
【问题描述】
以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
【基本要求】
首先实现一个链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。
【实现提示】
计算机解迷宫通常用的是“穷举求解”方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的通路都探索到则未能到达出口,则所设定的迷宫没有通解。
可以二维数组存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(n,n)。为处理方便起见,可以迷宫的四周加一圈障碍。对于迷宫任一位置,均可约定有东、南、西、北四个方向可通。
【选作内容】
(1) 编写递归形式的算法,求得迷宫中所有可能的通路;
(2) 以方阵形式输出迷宫及其通路。
2、概要设计
抽象数据类型定义描述
(对各类的成员及成员函数进行抽象描述,参见书或ppt及实验)
①ADTTisData
当前位置的行坐标、当前位置的列坐标、走到下一位置的方向endADTT
②ADTLinknodeisData
数据域、指针域Operation
Linknode //构造函数用于构造结点
endADTLinkNode
③ADTStackisData
栈顶指针Operation
Stack //构造函数输入:无
初始化栈:置空栈
~stack //析构函数Push
输入:要进栈的项e前置条件:无
动作:把e压入栈顶输出:无
后置条件:栈顶增加了一个新结点,栈顶指针指向新结点Pop
输入:无
前置条件:栈非空动作:弹出栈顶元素
输出:返回栈顶元素的值后置条件:删除栈顶元素
GetPop
动作:返回栈顶元素的值Clear
动作:清空栈empty
动作:检查栈顶指示是否等于NULL输出:栈空时返回1,否则返回0
endADTStack
调用GetMaze
调用
GetMaze
获得数组
调用类
ClassStack
主
函
调用
PrintPath
输出路径
调用结点类
ClassLinkNode
数
调用MazePath
探索迷宫路径
调用
Restore把-1恢复成0
int**GetMaze(intm,intn)返回存取迷宫的二维指针
boolMazepath(int**maze,intm,intn)//寻找迷宫maze中从(0,0)到(m,n)的路径voidPrintPath(Stackp) //输出路径
voidRestore(int**maze,intm,intn) //恢复迷宫主程序:用于调用其它函数
模块层次调用关系图
3、详细设计
实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。
ClassT 无成员函数
ClassLinkNode 无成员函数
ClassStack Stack(){ top=NULL;}
~Stack(){}voidPush(Te)
{
LinkNode*P;
P=newLinkNo
您可能关注的文档
最近下载
- 2024《小米公司手机品牌营销环境SWOT分析及营销策略》10000字.docx
- 4节 学校体育与学生动作发展.pdf
- 海康威视VisionMaster算法平台用户手册V2.2.pdf
- 石秀峰-数据治理-企业数字化转型必经之路-2022.3.19.pdf VIP
- 某大学综合体育馆项目可行性研究报告.doc VIP
- 幼儿园大班音乐《光脚的小约翰》活动课件.pptx
- 三校生计算机基础知识提纲及讲义资料.docx
- 三年级音乐学情及教材分析集合6篇 .pdf VIP
- 九年级化学下册教学课件《跨学科实践活动9 探究土壤酸碱性对植物生长的影响》.pptx VIP
- 大疆 大疆智图 操作白皮书.pdf VIP
文档评论(0)