网站大量收购独家精品文档,联系QQ:2885784924

数据结构课程设计迷宫问题.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档