一、 实验目的
通过解决迷宫问题,了解和掌握栈和队列的概念、操作及应用,培养编程
思维能力和算法设计能力。
二、 实验内容
1. 迷宫的表示:用二维数组来表示迷宫,每个元素表示该位置上的状态
(例如墙壁、通道等)。其中,’O’表示可到达点,’X’表示不可到达
点,’S’表示起始点,’E’表示终点。
2. 文件的读取与写入:迷宫的初始状态记录在.in 文件中,最终结果要
输出到.out 文件中。
3. 实现链栈的基本操作:栈在本实验中用于记录解决迷宫的路径,要实
现基本的初始化、入栈、出栈和判空等操作。
4. 实现链式队列的基本操作:bfs 算法借助队列实现迷宫路径的查找,
所以要实现基本的初始化、入队、出队等操作。
三、 实验步骤
1. 结构体的定义:定义栈、队列、以及坐标表示的结构体,方便算法的
设计。
2. 读入迷宫地图:从.in 文件中输入迷宫的大小和迷宫二维数组,将该
数组作为图表达。
3. 使用队列进行广度优先搜索,来找到从起点到终点的路径。在搜索过
程中需要注意避免重复走访以及边界限制等问题。
4. 记录经过的路径:使用队列来记录每一步的位置信息,且将每一个点
的前驱顶点信息记录到相应的 vis 数组中,以便以后回溯或防止循环访问。
5. 判断是否找到路线:当搜索到终点后,即可说明已找到通路,开始输
出路径信息。
6. 输出路径信息:回溯从起点到终点的路径信息,并将其记录到栈中,
回溯完成后,输出栈中的信息,即是经过的路径。
整个实验的完成需要对栈和队列的操作有深入了解,并且要熟悉广度优先
搜索算法。同时还需要掌握图论和基本编程技巧,比如递归、回溯、文件
读写、错误处理等。