#includetypedef int ElemType; typedef int STATUS; #define STACKSIZE 5 #define OK 1 #define ERROR 0 typedef struct { int top; int data[STACKSIZE]; }Stack; //堆栈初始化 void StackInit(Stack *S) { S->top=0; } //堆栈长度计算 STATUS StackLength(Stack *S) { return S->top; } //堆栈压入 STATUS PushStack(Stack *S,ElemType e) { if(S->top==STACKSIZE) return ERROR; S->data[S->top]=e; S->top++; return OK; } //堆栈弹出 int PopStack(Stack *S,ElemType *e) { if(S->top==0) return ERROR; S-> top--; *e=S->data[S->top]; return OK; } int main() { Stack stack; int value,flag=0,i; StackInit(&stack); printf("length=%d\n",StackLength(&stack)); for(i=0;i<=5;i++) { flag=PushStack(&stack,i); printf("flag=%d length=%d\n",flag,StackLength(&stack)); } for(i=0;i<=5;i++) { flag=PopStack(&stack,&value); printf("flag=%d value=%d length=%d\n",flag,value,StackLength(&stack)); } return 0; }
