我写了一个关于迷宫的算法,不过始终不对,请高手帮我看看吧,谢谢了~~~

来源:百度知道 编辑:UC知道 时间:2024/06/15 16:34:53
typedef int PosType;typedef int Status;
typedef struct
{
int ord;//通道块在路径上的“序号”
PosType seat;//通道块在迷宫中的“坐标位置”
int di;//从此通道走向下一通道块的“方向”
}SElemType;
typedef struct
{SElemType *base;//在栈构造之前和销毁之后,base的值为NULL
SElemType *top;//栈顶指针
int stacksize;//当前已分配的存储空间,以元素为单位
}SqStack;
Status InitStack(SqStack *s)
{s->base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));//分配空间
if(!s->base)exit(OVERFLOW);//存储分配失败
s->top=s->base;//成空栈
s->stacksize=STACK_INIT_SIZE;//初始栈的容量
return OK;
}
Status Pass(int maze[10][10],PosType curpos)
{
int i,j;
i=curpos/10;
j=curpos%10;
if(maze[i][j]==0)
return OK;
else
return ERROR;
}
Status FoorPrint(int maze[10][10],PosType curpos)
{
int i,j;
i=curpos/10;
j=curpos%10;
maze[i][j]=1;
return OK;
}
Status NextPos(PosType curpos,int a)
{
if(a==1

编译错误:
Push函数中
s->stacksize 少了个'-'

MazePath函数中,第一个if
if(Pass(maze,curpos))//当前位置可以通过,即是未曾走到过的通道块 {
最后的大括号被注销了

主函数中定义a[10][10]的迷宫第一行后的逗号是中文的

逻辑错误:
NextPos函数中,第一个if
if(a==1 && curpos<=8)
后面的curpos<=8换过一个条件,或者干脆不要

NO

程序太长.没有看不过我可以给你一个迷宫程序;这个可以用,但也不是一个很简练的程序.我也是新人!供你参考!
#include <stdio.h>
#include <stdlib.h>
#define ROW 8
#define COLUMN 8

typedef struct
{int row;
int col;
int dire;
}DATA;

typedef struct node
{DATA data;
struct node *next;
}LinkStack;

int mig[ROW+2][COLUMN+2]={
{1,1,1,1,1,1,1,1,1,1},
{1,0,0,1,0,0,0,1,0,1},//第一行
{1,0,0,1,0,0,0,1,0,1},
{1,0,0,0,0,1,1,0,0,1},//第三行
{1,0,1,1,1,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,1},//第五行
{1,0,1,0,0,0,1,0,0,1},
{1,0,1,1,1,0,1,1,0,1}, //第七行
{1,1,1,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1},
}; //