我们用一个二维数组表示迷宫的点,1能走,0不能走,用回溯法写,用一个简单一点的迷宫做事例:
#define _CRT_SECURE_NO_WARNINGS 1
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#define N 6 //N*N的迷宫
#define length N * N//最大行走步数
typedef struct Pos
{
int x;//横坐标0到N-1
int y;//纵坐标0到N-1
}Pos;
typedef struct Stack
{
Pos* _top;//栈顶指针
Pos* _end;//栈底指针
int stackSize;//栈的容量
}Stack;
void pathPrint();//打印路径
void MazeGetShortPath(Pos entry, Stack* path);//从第一部开始走
void myStackInit(Stack* s);//栈初始化
void zoulu(Pos now, int* arr);//走每一步的判断以及递归
void myStackPush(Stack* s, Pos x);//压入栈
Pos myStackPop(Stack* s);//弹出栈
int StackEmpty(Stack* s);//判空栈
Stack Path;//定义路径栈
Stack* s = &Path;//定义路径栈的指针,指向这个存放路径栈
Pos enterPoint;//起点
Pos finalPoint;//终点
int count = 0;//统计一共多少种走法
//------------------分割线,以上皆为头文件---------------------