/**
* 实验题目:
* 用图搜索方法求解迷宫问题
* 实验目的:
* 深入掌握图遍历算法在求解实际问题中的应用。
* 实验内容:
* 编写一个程序,完成如下功能:
* 1、建立一个迷宫对应的邻接表表示。
* 2、采用深度优先遍历算法输出从入口(1,1)到出口(M,N)的所有迷宫路径。
* 本实验采用深度优先遍历算法求所有迷宫路径。在用图搜索方法求解迷宫
* 问题时,一个方块看成是一个顶点,其编号为(i,j)。为此相应地修改图的
* 邻接表,邻接表的表头数组改为一个二维数组adjlist,其元素adjlist[i][j]
* 仅含有一个firstarc指针,它指向方块(i,j)的四周可走方块构成的一个单链表。
*
*/

#include <stdio.h>
#include <malloc.h>
#define MAX_SIZE 100
#define M 4 // 行数
#define N 4 // 列数
/*----------------------------以下定义邻接表类型---------------------------*/
typedef struct ANode // 边的结点结构类型
{
int i, j; // 该边的终点位置(i,j)
struct ANode *nextarc; // 指向下一条边的指针
}ArcNode;
typedef struct Vnode // 邻接表头结点的类型
{
ArcNode *firstarc; // 指向第一个相邻点
}VNode;
typedef struct
{
VNode adjlist[M + 2][N + 2]; // 邻接表头结点数组
}ALGraph; // 图的邻接表类型
typedef struct
{
int i; // 当前方块的行号
int j; // 当前方块的列号
}Box;
typedef struct
{
Box data[MAX_SIZE];
int length; // 路径长度
}PathType; &n

最低0.47元/天 解锁文章
2827

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



