- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录
TOC \o 1-5 \h \z \o Current Document 前言 1.
需求分析 1..
\o Current Document 课程设计目的 1.
\o Current Document 2.2课程设计任务 1.
2.3 设计环境 1..
概要设计 1..
\o Current Document 3.1数据结构设计 1.
\o Current Document 模块设计 2..
详细设计 3..
4.1 数据类型的定义
4.1 数据类型的定义
错 误. !未定义书签
4.2 主要模块的算法描述
错 误!未定义书签
.6..7..附 录(程序代码实现 ) 9
.6..
7..
附 录(程序代码实现 )
9
测试分析
课程设计总结
参考文献 8
致 谢 8
前言
设计一个简单迷宫程序 , 从入口出发 , 按某一方向向前探索 , 若能走通 (未走过的 ), 即某处可以到达 ,则到达新点 ,否则试探下一方向 ;若所有方 向均没有通路 ,则沿原点返回前一点 , 换下一个方向在继续试探 ,直到所有可 能的通路都探索到 ,或找到一条通路 , 或无路可走又返回到入口点 。并利用两 种方法实现 :一种用栈实现 ,另一种用队列实现 。
需求分析
课程设计目的
学生在教师指导下运用所学课程的知识来研究 、解决一些具有一定综合性 问题的专业课题 。通过课程设计 (论文), 提高学生综合运用所学知识来解决 实际问题、使用文献资料 、及进行科学实验或技术设计的初步能力 ,为毕业设 计(论文) 打基础 。
课程设计任务
给出一个任意大小的迷宫数据 ,求出一条走出迷宫的路径 , 输出迷宫并将 所求路径输出 。
要求用两种方法实现 :一种用栈实现 ,另一种用队列实现 。, 我主要负责 队列方面
设计环境
(1)WINDOWS 2000/2003/XP/7/Vist a 系统
(2 ) Visual C++ 或 TC 集成开发环境
概要设计
数据结构设计
(1)迷宫类型
设迷宫为 M 行 N 列 ,利用 maze[M][N] 来表示一个迷宫 ,maze=0 或 1,其中 0 表示通路 ,1表示不通 。当从某点试探是 ,中间点有 8个不同点可以试探 ,而四个角 有3个方向,其他边缘点有 5个方向 ,为使问题更容易分析我们用 maze[M+2][N+2] 来表示迷宫 ,而迷宫四周的值全部为 1。定义如下 :
#define M 6 /* 迷宫的实际行 */
#define N 8 /* 迷宫的实际列 */
int maze[M+2][N+2];
队列的类型定义
队列的有关数据结构 、 试探方向等和栈的求解方法处理基本相同 。不同的是 : 如何存储搜索路径 。 在搜索过程中必须几下每一个可到达的坐标点 , 以便从这些点 出发继续向四周搜索 。到达迷宫的出口点 (m,n )后,为能够从出口沿搜索路径回 溯直至入口 ,对于每一点 ,记下坐标点的同时 , 还要记下到达该点的前驱点 ,因此 用一个结构体数组 ele[MAX] 作为队列的存储空间 ,因为每一点至少被访问一次 ,所 以 MAX 至多等于 m*n 。该结构体有三个域 :x、y 和 pre 。其中 x、y 分别为所到达 点的坐标 ,pre 为前驱点在 elem 中的下标 。除此之外 ,还需设定头 、尾指针 ,分别 指向队头,队尾。类型定义如下 :
typedef struct // 队的相关类型定义
{ int x,y;
int pre;
}Elemtype;
typedef struct // 队列的类型定义
{ Elemtype elem[MAXSIZE];
int front,rear;
int len;
}SqQueue;
模块设计
定义函数 DLmazepath( ) ,利用队列实现迷宫求 。
定义函数 DLmazepath( ) ,实现队列的迷宫路径输出 。
定义函数 InitQueue () ,实现队列的初始化 。
定义函数 QueueEmpty( ) , 判断队列是否为空 ,为空返回 1,否则返回 0. 定义函数 GetHead (SqQueue q,Elemtype *e ),实现队头元素的读取 。 定义函数 EnQueue(SqQueue *q,Elemtype e) ,实现入队操作 。 定义函数 DeQueue(SqQueue *q,Elemtype *e) , 实现出队操作 。 定义函数 Sprint(int a[M+2][N+2]) ,实现 ,迷宫的输出 。
详细设计
(1)主函数
void main()
{
int a,i,j,maze2[M+2][N+2]; /* 构造一个迷宫 */
int maze[M+2
文档评论(0)