一、简介
利用栈来解决走迷宫问题还算是比较简单,也容易想的到。不用栈的做法之前有想过,但是也没想明白具体该怎么实现。下面用栈来实现走迷宫问题。说明:假设可以斜着走,那么每个位置就有8个方向可以走。
二、流程图
在编程实现前,首先应该建立一个流程图,这是为下面编程提供清晰的思路。

这个流程图只是简单说明走迷宫的基本过程,但是要用具体的代码实现,还需要对每个步骤添加很多细节。
三、代码实现
1. 先来看Node.h文件
这个文件作用是产生一个结点。这里对结点的数据域做了修改,已不再是简单的数据类型,而是利用数组来保存迷宫中的位置信息(坐标)和方向。这里加方向只是为了当新节点无路可走时,在退回上一位置后,不用从最开始的方向(顺时针),即左上角的方向开始找路,只需要访问该节点的方向,然后顺时针往前移动一个位置,然后重复的找。因为刚开始编程时没有用到方向,使得程序一直卡在两个节点之间,来回跳。

假如当前结点在白色地方,环绕它身边的有8个位置,我们每次找新位置时都是按顺时针顺序从数字1的地方开始,直到数字8的地方。数字1-8也表示下个结点的方向。代码如下:
template<class T> class Stack;
template<class T>
class Node
{
friend class Stack<T>;
public:
Node()
{
this->next = NULL;
}
C++实现走迷宫算法:栈的应用

本文介绍如何使用栈解决走迷宫问题,通过C++代码详细阐述实现过程,包括创建Node.h(定义节点结构)、Stack.h(栈操作)和main.cpp(主要实现)三个部分。在流程图和代码中,考虑到可以斜着走,每个位置有8个可能的方向。
最低0.47元/天 解锁文章
4107

被折叠的 条评论
为什么被折叠?



