采用广度优先遍历的方式从起点开始遍历,一直到没有路径可以走,即队列为空。
#include<stdio.h>
#include<stdlib.h>
#define M 10
/*******求出迷宫的最短路径步数以及路径,-1代表障碍物和外围墙壁,
********100代表可走通路径maze[1][1]是迷宫的起点路径,maze[8][8]
********是迷宫的终点。***************/
/*测试数据:
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 100 -1 -1 -1 100 100 -1 100 -1
-1 100 -1 -1 100 -1 -1 -1 100 -1
-1 100 -1 -1 100 100 100 -1 100 -1
-1 100 -1 -1 100 -1 100 -1 100 -1
-1 100 100 100 100 -1 100 -1 100 -1
-1 -1 -1 -1 -1 -1 100 -1 100 -1
-1 100 -1 -1 -1 100 100 -1 100 -1
-1 -1 100 100 100 100 100 100 100 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
*/
typedef struct{
// 迷宫的一个点
int x;
int y;
}QElemType;
typedef struct Qnode{
// 队列的一个链表类型的元素
QElemType e;
struct Qnode *next;
}Qnode,*QnodePtr;
typedef struct{
// 队列结构体
QnodePtr front;
QnodePtr rear;
int ListSize;
}List;
void INIT_LIST(List &L){
L.front=L.rear=(QnodePtr)malloc(sizeof(Qnode));//学会掌握malloc的使用********
if(!L.front){