迷宫求解非递归 DFS BFS(应用栈和队列)

栈和队列的应用对迷宫问题求解 没有递归 自己手动建的栈和队 并且输出路径 DFS的路径就是

栈中的坐标 BFS的路径在队又开了一个域存上一层的base值 语言还是用的C++ 感觉比C的封装性好很多

充分体会了一下DFS一边比BFS快 但是BFS是最优解而DFS可能不是最优解

 

#include 
#include
#include
#include
using namespace std;
#define Maze_size 100 //定义迷宫最大值
class Maze
{
public:
    char Maze_map[Maze_size][Maze_size];
    bool Maze_map_bj[Maze_size][Maze_size];
    int stack[Maze_size][2],top;//栈 栈顶指针
    int queue[Maze_size][3],base,qtop;//队列 0 1存坐标 2记录路径 对首指针 队尾指针
    int length,wide;//迷宫长,宽(竖,横)
    int startx,starty;//起点坐标
    int step[4][2];
    Maze();//初始化迷宫
    void input();//从键盘输入
    bool DFS();//利用栈深度优先遍历
    bool BFS();//利用队列广度优先遍历
    void outputDFSmap();//输出深度优先遍历路径
    void outputBFSmap();//输出广度优先遍历路径
};

Maze::Maze()//初始化
{
    length=wide=0;
    startx=starty=0;
    step= {{0,1},{0,-1},{1,0},{-1,0}};
    top=0;
}

void Maze::input()//输入
{
    do
    {
        cout<<"input length and wide of maze(length>0,wide>0)"<>length>>wide;
    }
    while(length<=0||wide<=0);
    cout<<"input maze"<>Maze_map[i][j];
            if(Maze_map[i][j]=='S')
                startx=i,starty=j;
        }
    cout<<"input end"<


 

你可能感兴趣的:(数据结构作业)