数据结构_迷宫求问题_课程设计!.docVIP

  • 11
  • 0
  • 约6.38万字
  • 约 17页
  • 2016-11-07 发布于贵州
  • 举报
数据结构_迷宫求问题_课程设计!

数据结构课程设计报告 题目: 迷宫求解 班级: 姓名: 学号: 完成日期: 目录 一、课程设计概述…………………………………………………………………..2 二、问题描述………………………………………………………………………. 2 三、需求分析………………………………………………………………………. 2 四、概要设计………………………………………………………………………. 2 五、存储结构………………………………………………………………………. 4 六、流程图 ………………………………………………………………………... 4 详细设计………………………………………………………………………. 4 调试分析………………………………………………………………………..8 运行结果及分析………………………………………………………………. 8 参考文献………………………………………………………………………. 10 主程序……………………………………………………………………..…10 一、课程设计概述 本次数据结构课程设计主要完成用栈来实现迷宫求解问题。 使用语言:C 编译环境:VC6.0 二、问题描述 迷宫问题是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口走到出口,而不走错一步。老鼠经过多次试验最终学会走通迷宫的路线。设计一个计算机程序对任意设定的矩形迷宫如下图A所示,求出一条从入口到出口的通路,或得出没有通路的结论。??? 图1-1. 三、需求分析 要求设计程序输出如下: (1) 建立一个大小为m×n的任意迷宫(迷宫数据可由用户输入或由程序自动生成),并在屏幕上显示出来; (2)找出一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。 (3)用一种标志(如数字8)在迷宫中标出该条通路; (4)在屏幕上输出迷宫和通路; (5)上述功能可用菜单选择。 概要设计 设定栈的抽象数据类型定义为: ADT stack{ 数据对象:D={ai|ai∈charset,i=1,2,……,n,n≥0} 数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2……,n} 基本操作: InitStack(S) //操作结果:构造一个空栈S。 DestroyStack(S) //初始条件:栈S已存在。 //操作结果:销毁栈S。 ClearStack(S) //初始条件:栈S已存在。 //操作结果:将S清为空栈。 StackLength(S) //初始条件:栈S已存在。 //操作结果:返回栈S的长度。 StackEmpty(S) //初始条件:栈S已存在。 //操作结果:若S为空栈,则返回TRUE,否则返回FALSE。 GetTop(S,e) //初始条件:栈S已存在。 //操作结果:若栈S不空,则以e返回栈顶元素。 Push(S,e) //初始条件:栈S已存在。 //操作结果:在栈S的栈顶插入新的栈顶元素e。 Pop(S,e) //初始条件:栈S已存在。 //操作结果:删除S的栈顶元素,并以e返回其值。 StackTraverse(S,visit( )) //初始条件:栈S已存在。 //操作结果:从栈底到栈顶依次对S中的每个元素调用函数visit( ). }ADTstack 存储结构 struct point{ int row; //通道块在路径上的“行”位置 int col; //迷宫的“出口” I nt predecessor; //该通道的“前趋” }queue[512]; 流程图 图1-2 七、详细设计 实现概要设计中定义的所有数据类型及操作的伪代码算法节点类型和指针类型 迷宫矩阵类型:int maze[M+2][N+2];为方便操作使其为全局变量 迷宫中节点类型及队列类型:struct point{int row,col,predecessor} que[512] 迷宫的操作 (1)手动生成迷宫 void

文档评论(0)

1亿VIP精品文档

相关文档