#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<malloc.h>
typedef int Status;
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
struct sqstack{
int *base;
int *top;
int stacksize;
};
void initstack( sqstack &s){
s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!s.base){printf("\n内存不足\n");exit(0);}
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
int pop( sqstack &s,int *e){
if(s.top==s.base)return 0;
*e=*(--s.top);
return 1;
}
void push( sqstack &s,int e){
if(s.top-s.base>=s.stacksize){
s.base=(int *)realloc(s.base,
(s.stacksize+STACKINCREMENT)*sizeof(int));
if(!s.base)exit(0);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*(s.top)=e;
(s.top)++;
}
int gettop(sqstack &s,int *e){
if(s.top==s.base)return 0;
*e= *(s.top-1);
return 1;
}
struct migong{
int flag;
int dir;
};