迷宫问题
大家好,我是一个菜鸟,现在正在学习数据结构,希望大家指点我,我编写了一个走迷宫的程序,希望大家指点。源程序如下:(可以动态实现)
#include"time.h"
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
#define null 0
int a[11][15]={ , /定义迷宫,这是我们课程设计,所以就用老师给的了/
, /0代表墙,1代表可以通行/
,
,
,
,
,
,
,
,
};
struct moving /定义走动方向/
{int x;
int y;
}move[9]=,,,,,,,,};
typedef struct Position *PPosition;
struct Position /定义结构体/
{
int x;
int y;
int direction;
PPosition link;
};
struct LinkPosition /引入一层封装,其实就是好定义空栈罢了/
{
PPosition top;
};
typedef struct LinkPosition *PLinkPosition;
PLinkPosition createEmptyPosition(void) /建立空栈/
{
PLinkPosition plposition;
plposition=(PLinkPosition)malloc(sizeof(struct LinkPosition));
plposition->top=null;
return(plposition);
}
void push(PLinkPosition plposition,int x,int y) /压栈/
{
PPosition p;
p=(PPosition)malloc(sizeof(struct Position));
p->x=x;
p->y=y;
p->direction=1;
p->link=plposition->top;
plposition->top=p;
}
void pop(PLinkPosition plposition) /弹栈/
{
PPosition p;
p=plposition->top;
plposition->top=plposition->top->link;
free(p);
}
int judge(PLinkPosition plposition) /判断这个位置是不是栈中已有的/
{int m,n;
PPosition p;
m=plposition->top->x;
n=plposition->top->y;
p=plposition->top->link;
while(p!=null)
{if(p->x!=m||p->y!=n)p=p->link;
else
{return(0);
break;
}
}
return(1);
}
void maze(void) /画迷宫/
{
int i,j;
setbkcolor(1);
setcolor(4);
rectangle(90,50,540,380);
for(i=80;i<380;i=i 30)
line(90,i,540,i);
for(i=120;i<540;i=i 30)
line(i,50,i,380);
for(i=0;i<11;i )
{for(j=0;j<15;j )
if(a[j]==1)floodfill(105 j*30,65 i*30,4);
};
}
void erasermouse(PLinkPosition plposition) /擦除所走过的点/
{
int x1,y1;
x1=105 30*(plposition->top->y-1);
y1=65 30*(plposition->top->x-1);
setcolor(15);
line(x1-10,y1,x1 10,y1);
line(x1,y1-10,x1,y1 10);
setcolor(4);
}
void mouse(PLinkPosition plposition) /画出当前位置/
{
int x1,y1;
x1=105 30*(plposition->top->y-1);
y1=65 30*(plposition->top->x-1);
line(x1-10,y1,x1 10,y1);
line(x1,y1-10,x1,y1 10);
}
void TIMEDELAY() /时间延迟函数,这样动态实现时才可以看清/
{
clock_t time;
time=5 clock();
while(time>clock());
}
main()
{
PLinkPosition plposition,answer;
PPosition p;
int i,j,d,m,n,m1,n1,x1,y1,driver=VGA,mode=VGAHI;
int c[13][17]=;
clock_t times;
initgraph(