Êý¾Ý½á¹¹(CÓïÑÔ°æ)ʵÑ鱨¸æ(ÃÔ¹¬) ÏÂÔØ±¾ÎÄ

#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;jlie;j++)

/*ÉèÖÃÍâǽ*/ {

maze->a[0][j]='!';

maze->a[maze->hang][j]='!';

}

for(i=1;ihang;i++) {

maze->a[i][0]='!'; maze->a[i][maze->lie]='!';

}

srand((unsigned)time( NULL )); rand();

for(i=1; i hang; i++) }

int Pass(MazeType *maze, PosType curpos ) //Åжϵ±Ç°Î»Öÿɷñͨ¹ý {

if ((curpos.x < 1) || (curpos.x >= maze->lie))

for(j=1;jlie;j++) {

if (rand()>=RAND_MAX/4) maze->a[i][j] =' '; //' ' °µÊ¾³ö· else maze->a[i][j] ='!'; //'!'°µÊ¾ÎÞ³ö·

} return OK;