#define OK 1 #define ERROR 0 #define NULL 0 #define OVERFLOW -2 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 //Õ»µÄ˳Ðò´æ´¢±íʾ typedef struct {
int x; /*ÁÐ*/ int y; /*ÐÐ*/
}PosType; //×ø±êλÖÃÀàÐÍ typedef struct {
int ord; //ͨµÀ¿éÔÚ·¾¶ÉϵÄ\ÐòºÅ\
PosType seat; //ͨµÀ¿éÔÚÃÔ¹¬ÖеÄ\×ø±êλÖÃ\ int di; //´Ó´ËͨµÀ¿é×ßÏòÏÂһͨµÀ¿éµÄ\·½Ïò\ }SElemType; //Õ»µÄÔªËØÀàÐÍ typedef struct {
SElemType *base; SElemType *top;
int stacksize; //µ±Ç°ÒÑ·ÖÅäµÄ´æ´¢¿Õ¼ä£¬ÒÔÔªËØÎªµ¥Î» }
SqStack; //»ù±¾²Ù×÷
int 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; }
//ÈôÕ»²»¿Õ£¬ÔòÓÃe·µ»ØSµÄÕ»¶¥ÔªËØ£¬²¢·µ»ØOK£»·ñÔò·µ»ØERROR int GetTop(SqStack *S,SElemType *e) {
if(S->top==S->base)
return ERROR;
*e=*(S->top-1); return OK; }
int Push(SqStack *S,SElemType *e)//²åÈëÔªËØe×÷ΪеÄÕ»¶¥ÔªËØ
{
if(S->top-S->base>=S->stacksize)/*Õ»Âú£¬×·¼Ó´æ´¢¿Õ¼ä*/ {
S->base=(SElemType*)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(S
ElemType));
if(!S->base)
exit(OVERFLOW);
S->top=S->base+S->stacksize; S->stacksize+=STACKINCREMENT;
}
*S->top++=*e; return OK; }
//ÈôÕ»²»¿Õ£¬Ôòɾ³ýSµÄÕ»¶¥ÔªËØ£¬ÓÃe·µ»ØÆäÖµ£¬²¢·µ»ØOK£»·ñÔò·µ»ØERROR
int Pop(SqStack *S,SElemType *e) {
if(S->top==S->base)
return ERROR;
*e=*--S->top; return OK;
}
int StackEmpty(SqStack *S) {
return(S->top==S->base) ;} //ÃÔ¹¬³ÌÐò typedef struct {
int lie; /*ÁÐÊý*/ int hang; /*ÐÐÊý*/ char a[999][999]; }
MazeType; /*ÃÔ¹¬ÀàÐÍ*/ /*Ëæ»úÉú³ÉÃÔ¹¬*/
int generatemaze( MazeType *maze) { int i,j;
maze->a[0][0]=2;
maze->a[++maze->hang][++maze->lie]=3; maze->a[0][maze->lie]='!'; maze->a[maze->hang][0]='!'; for(j=1;j
/*ÉèÖÃÍâǽ*/ {
maze->a[0][j]='!';
maze->a[maze->hang][j]='!';
}
for(i=1;i
maze->a[i][0]='!'; maze->a[i][maze->lie]='!';
}
srand((unsigned)time( NULL )); rand();
for(i=1; i
int Pass(MazeType *maze, PosType curpos ) //Åжϵ±Ç°Î»Öÿɷñͨ¹ý {
if ((curpos.x < 1) || (curpos.x >= maze->lie))
for(j=1;j
if (rand()>=RAND_MAX/4) maze->a[i][j] =' '; //' ' °µÊ¾³ö· else maze->a[i][j] ='!'; //'!'°µÊ¾ÎÞ³ö·
} return OK;