用图搜索方法求解迷宫问题

/**
*    实验题目:
*        用图搜索方法求解迷宫问题
*    实验目的:
*        深入掌握图遍历算法在求解实际问题中的应用。
*    实验内容:
*        编写一个程序,完成如下功能:
*    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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值