C语言数据结构迷宫求解
最近在学数据结构,然后在迷宫求解问题上,在网上搜索到的代码写的不够详细,所以打算写一下详细一点的代码,尽量包含一些完整的注释,帮助大家理解。下面贴出代码
这份代码使用的是回溯法来求解,回溯法就是沿这一个方向进行探索,如果失败,则原路返回,如果可以走通,则继续往下走。
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
typedef struct Data {
int x;
int y;
int k; //这是下一步走的方向(与主函数里的move[][0]对应,move二维数组里的x位)
} data; //数据结构体,记录迷宫走的坐标
typedef struct StackTop {
data* d;
int top; //栈顶
int size; //栈的大小
}Stack; //栈的结构体
void CreateStacks(Stack **p) //创建栈
{
Stack *top = NULL;
top = (Stack*)malloc(sizeof(struct StackTop));
if (top == NULL)
{
printf("Create failed\n");
exit(0);
}
else
{
top->d = (data*)malloc(100 * sizeof(data)); //这个100是为了创建较大一点的线性表
top->top = -1; //在寻找路径时会先进行入栈,所以初始化为-1
top->size = 100; //往大