风也温柔

计算机科学知识库

数据结构走迷宫游戏 C语言数据结构实现:迷宫问题的通用解法!

  问题:

  以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。

  基本要求

  输入的形式和范围:

  非递归:行列为整型,坐标为整型

  递归:迷宫以整型二维数组形式输入

  输出的形式:非递归输出三元组通路和方阵通路;

  递归以方阵输出迷宫和所有通路;

  1、非递归算法,求一条通路输出三元组形式如:(1,1,1),(1,2,2)数据结构走迷宫游戏,(2,2,2),(3数据结构走迷宫游戏,2,3),(3,1数据结构走迷宫游戏 C语言数据结构实现:迷宫问题的通用解法!,2),…和方阵通路;

  2、递归算法,求得迷宫中所有可能的通路,以方阵形式输出迷宫及其通路。

  递归解法:

  <pre>#include

include

define M 6

define N 6

define END N-2

int flag=0;
typedef struct
{

int x,y,d;

}position;
/创建迷宫/
void creat_maze(int a[][M])
{

int i,j;
for(i=0;ielem=e;
P->next=S;
S=P;
return S;

}
PLStack Delete(PLStack S) //删除栈头
{

PLStack P;
P=S;
if(!StackEmpty(S))
{
    S=S->next;
    free(P);
    return S;
}

}
TriMatrix Pop(PLStack S,TriMatrix e) //出栈
{

if(!StackEmpty(S))
{
    e=S->elem;
    return e;
}

}
void MazePath(mark start,mark end,

          Elemtype maze[MAXSIZE][MAXSIZE],
          int m,int n,int diradd[4][2])   //寻找路径

{

int i,j,d;
int a,b;
TriMatrix elem,e;
PLStack S1,S2;
S1=InitStack(S1);
S2=InitStack(S2);
maze[start.x][start.y]=2;   //修改入口坐标,做标记
elem.x=start.x;
elem.y=start.y;
elem.d=0;  //开始为0
S1=Push(S1,elem);
while(!StackEmpty(S1))  //栈不空,有路可走
{
    elem=Pop(S1,elem);

<p>数据结构走迷宫游戏_迷宫游戏大全闯关游戏_迷宫游戏经典大全闯关游戏

    S1=Delete(S1);
    i=elem.x;
    j=elem.y;
    d=elem.d+1;
    while(d