- 5
- 0
- 约1.19万字
- 约 23页
- 2023-12-23 发布于江苏
- 举报
实用文档
一、课程设计题目
迷宫与栈问题
二、课程设计内容(含技术指标)
【问题描述】
以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
【任务要求】
首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。
编写递归形式的算法,求得迷宫中所有可能的通路。
以方阵形式输出迷宫及其通路。
【测试数据】
迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)为出口。
迷宫与栈问题
摘要
数据结构是研究与数据之间的关系,是互相之间一种或多种特定关系的数据元素的集合,我们称这一关系为数据的逻辑结构。数据结构在计算机的表示(又称映像)称为数据的物理结构,又称存储结构。
本次课程设计是迷宫求解问题,主要是模拟从入口到出口的通路。程序中的数据采取的是“栈”作为数据的逻辑结构,并且使用链式存储结构,即是实现一个以链表作存储结构的栈类型。本课程设计实现了链栈的建立,入栈,出栈,判断栈是否为空的方法,关键的是迷宫通路路径的“穷举求解”和递归求解的方法。
本课程设计重要说明了系统的设计思路、概要设计以及各个功能模块的详细设计和实现方法。
本次程序的开发工具是microsoftvisualstudio2008,编程语言是C语言。
关键词:迷宫求解链栈穷举求解递归求解
目录
摘要……………PAGEVI
1需求分析………1
1.1基本原理分析……………………1
1.2功能要求…………1
2概要设计………2
2.1数据结构及其抽象数据类型的定义……………2
2.1.1栈的抽象数据类型……………2
2.1.2迷宫的抽象数据类型…………2
2.1.3功能模块分解…………………3
3详细设计………4
3.1主函数与各功能模块……………4
3.2迷宫路径模块……………………4
3.2.1算法分析………4
3.2.2流程图…………5
4软件测试………6
4.1调试过程中遇到的问题的解决,以及程序设计思想的实现…6
4.2测试数据…………6
4.3测试结果…………8
4.4结果分析…………10
参考文献·………11
心得体会·………12
教师评语·………13
答辩记录表·……………………14
附录·……………15
1需求分析
1.1基本原理分析
迷宫问题通常是用“穷举求解”方法解决,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前走;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。栈是一个后进先出的结构,可以用来保存从入口到当前位置的路径。
定义迷宫类型来存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(n,n)。为处理方便起见,在迷宫的四周加一圈障碍。对于迷宫任何一个位置,均约定东、南、西、北四个方向可通。
1.2功能要求
(1)以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。迷宫的四周有一圈障碍。
(2)程序输出的结果以三元组(i,j,di)的形式输出,其中:(i,j)指示迷宫中的一个坐标,di表示走到下一坐标的方向,di的取值为1、2、3、4分别表示东、南、西、北
(3)程序能够输出一个任意的迷宫从指定入口到出口的所有通路,以及以方阵形式输出迷宫
(4)若设定的迷宫存在通路,则以方阵形式将迷宫及其通路输出到标准输出文件上,其中字符“1”表示障碍,“2”表示路径,“3”表示曾途经该位置但不能到达出口,其余位置用0表示。若设定迷宫不存在通路
原创力文档

文档评论(0)