大家好,我是一个菜鸟,现在正在学习数据结构,希望大家指点我,我编写了一个走迷宫的程序,希望大家指点。源程序如下:(可以动态实现)
#include"time.h"
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
#define null 0
int a[11][15]={ {1,0,1,1,1,0,0,1,1,1,0,0,0,0,0}, /定义迷宫,这是我们课程设计,所以就用老师给的了/
{0,1,1,1,0,0,1,0,0,0,0,1,1,0,0}, /0代表墙,1代表可以通行/
{1,0,0,1,1,1,1,0,0,0,0,0,1,0,0},
{0,0,1,0,0,0,0,1,0,0,0,1,0,1,1},
{0,0,1,0,1,1,0,1,0,0,0,0,0,0,0},
{1,1,0,0,1,0,0,0,1,0,1,1,0,0,0},
{1,0,0,0,0,1,1,0,0,0,0,0,0,0,0},
{1,1,0,0,1,0,0,1,0,0,0,0,0,1,0},
{0,0,1,1,1,0,0,1,0,0,1,1,1,1,1},
{1,1,0,0,0,0,0,1,1,1,0,0,0,0,1},
{1,0,1,1,0,0,0,0,0,1,0,0,0,0,1}
};
struct moving /定义走动方向/
{int x;
int y;
}move[9]={{0,0},{1,1},{0,1},{1,0},{-1,1},{1,-1},{-1,0},{0,-1},{-1,-1}};
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[i][j]==1)floodfill(105+j*30,65+i*30,4);
};
}