1 #include2 #include 3 #define Stack_Size 100 4 #define Stackincrement 10 5 #define ok 1 6 #define error -1 7 #define overflow 2 8 #define TRUE 1 9 #define FALSE 010 typedef int status;11 typedef struct12 {13 int *base;14 int *top;15 int stacksize;16 }SqStack;17 status InitStack(SqStack &S)18 {19 S.base=(int *)malloc(Stack_Size*sizeof(int));20 if(!S.base) exit(overflow);21 S.top=S.base;22 S.stacksize=Stack_Size;23 return ok;24 }25 status StackEmpty(SqStack &S)26 {27 if(S.top==S.base)28 return TRUE;29 else return FALSE;30 }31 status StackLength(SqStack S)32 {33 return (S.top-S.base);34 }35 status GetTop(SqStack S,int &e)36 {37 if(S.top==S.base) return error;38 e=*(S.top-1);39 return ok;40 }41 status Push(SqStack &S,int e)42 {43 if((S.top-S.base)==S.stacksize)44 {45 S.base=(int *)realloc(S.base,(S.stacksize+Stackincrement)*sizeof(int));46 if(!S.base) exit(overflow);47 S.top=S.base+S.stacksize;48 S.stacksize+=Stackincrement;49 }50 *S.top++=e;51 return ok;52 }53 status Pop(SqStack &S,int &e)54 {55 if(S.top==S.base) return error;56 e=*--S.top;57 return ok;58 }59 int main()60 {61 int i,j,n,e;62 SqStack S1;63 InitStack(S1);64 printf("请输入堆栈长度;\n");65 scanf("%d",&n);66 printf("请输入堆栈元素:\n");67 for(i=0;i