迷宫问题,C++高手请进!

来源:百度知道 编辑:UC知道 时间:2024/05/25 11:53:21
小弟初涉C++,写了个迷宫程序,回溯部分一直有溢出迹象。下面把主要部分的代码附上,请大侠不吝修正并指出错误,小弟不胜感激。
maze(int i,int j,int **array,int l,int s)
{
bool finish = false;
array[i][j] = 2;
if (i==(l-1) && j==(s-1))
return finish=true;
if (!finish && array[i+1][j]==0 && i<l)
finish=maze(i+1,j,array,l,s);
if (!finish && array[i][j+1]==0 && j<s)
finish=maze(i,j+1,array,l,s);
if (!finish && array[i-1][j]==0 && i>0)
finish=maze(i-1,j,array,l,s);
if (!finish && array[i][j-1]==0 && j>0)
finish=maze(i,j-1,array,l,s);
if (!finish){
if(array[i+1][j]==2 && i<l)
{
array[i+1][j]=0;
finish=maze(i+1,j,array,l,s);
}
if(array[i][j+1]==2 && j<s)
{
array[i][j+1]=0;
finish=maze(i,j+1,array,l,s);
}
if(array[i-1][j]==2 && i>0)
{
array[i-1][j]=0;

#include<stdio.h>
#include<stdlib.h>
#define STACK_INI_SIZE 100
#define STACKINCREMENT 50
#define NULL 0
typedef struct
{
int *top;
int *base;
int length;
int stacksize;
}sqstack;
int mg[25][25];
int m=1,n=1,x,y;
/*********************************************/
main()
{
void initstack(sqstack *s);/*初始化栈*/
void stackpush(sqstack *s,int);/*增加栈顶*/
void stackpop(sqstack *s);/*撤销栈顶*/
void stackinput(sqstack *s);/*输出栈*/
int mgway(sqstack *s);/*迷宫路径*/
void destorystack(sqstack *s);/*撤销栈S*/
void makemg(sqstack *s);/*制造迷宫*/
sqstack s;
int i,flag1=1,flag2=1,flag3=1;
char ch;
srand((unsigned)time(NULL));
while(flag1)
{
initstack(&s);
flag2=1;
makemg(&s);
i=mgway(&s);
if(i==0)
printf("此迷宫没有通路\n");
else
stackinput(&s);
destorystack(&s);
printf(