数据结构课程设计报告-迷宫求解.doc
《数据结构课程设计报告-迷宫求解.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告-迷宫求解.doc(13页珍藏版)》请在沃文网上搜索。
1、数据结构课程设计报告-迷宫问题求解 学号: 姓名: 班级: 指导老师: 目 录一、需求分析2二、数据结构21.数据结构设计考虑22.逻辑结构存储结构2三、算法设计3四、调试分析7五、程序实现及测试8六、体会及不足之处9七、参考文献10八、源代码10一、需求分析本课程设计是解决迷宫求解的问题,从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中要应用“栈”的思想假设“当前位置”指的是“在搜索过程中的某一时
2、刻所在图中某个方块位置”,则求迷宫中一条路径的算法的基本思想是:若当前位置“可通”,则纳入“当前路径”,并继续朝“下一位置”探索,即切换“下一位置”为“当前位置”,如此重复直至到达出口;若当前位置“不可通”,则应顺着“来向”退回到“前一通道块”,然后朝着除“来向”之外的其他方向继续探索;若该通道块的四周4个方块均“不可通”,则应从“当前路径”上删除该通道块。所谓“下一位置”指的是当前位置四周4个方向(上、下、左、右)上相邻的方块。假设以栈记录“当前路径”,则栈顶中存放的是“当前路径上最后一个通道块”。由此,“纳入路径”的操作即为“当前位置入栈”;“从当前路径上删除前一通道块”的操作即为“出栈”
3、。二、数据结构1.数据结构设计考虑1)建立一个二维数组表示迷宫的路径(0表示通道,1表示墙壁);2)创建一个栈,用来存储“当前路径”,即“在搜索过程中某一时刻所在图中某个方块位置”。2.逻辑结构存储结构1)创建一个Int类型的二维数组intmazen1n2,用来存放0和1(0表示通道,1表示墙壁);2)创建一个结构体用来储存数组信息结构体:typedef struct/迷宫内部设置int shu1616;int row;int col;Maze;创造一个链栈struct nodeint row;int col;struct node *next;三、算法设计首先,创建数组的大小,此数组大小要求
4、用户自己输入。具体算法:printf(输入迷宫的形状!n);scanf(%d%d,&x,&y);Maze m;CreatInit(&m,x,y);函数:void CreatInit(Maze *m,int x,int y)/创建迷宫printf(please input number:n);int i,j;for(i=0;i=x;i+)for(j=0;jshuij = 2;for(i=1;i=x;i+)for(j=1;jshuij);m-row = x;m-col = y;其中的0和1分别是表示通路和障碍,定义的数组其实就是迷宫的设计图其次,产生迷宫,算法:for(i=1;i=x;i+)for
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 迷宫 求解