栈的实现代码及操作: #include < malloc.h > #include < stdio.h > #define STACK_INIT_SIZE 100 #define INCREMENT 10 #define OVERFLOW -2 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int ElemType;typedef struct SqStack ... { ElemType *base; int top; int stacksize;} SqStack; // 清空栈 int ClearStack(SqStack * s) ... { s->top=-1; return OK;} // 判断是否为空 int StackEmpty(SqStack s) ... { if(s.top==-1) return TRUE; else return FALSE;} // 初始化 int InitStack(SqStack * s) ... { s->base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(!s->base) return OVERFLOW; s->top=-1; s->stacksize=STACK_INIT_SIZE; return OK;} // 入栈 int Push(SqStack * s,ElemType e) ... { if(s->top==s->stacksize-1) ...{ ElemType *newbase=(ElemType *)realloc(s->base,sizeof(ElemType)*(s->stacksize+INCREMENT)); if(!newbase) return OVERFLOW; s->base=newbase; s->stacksize+=INCREMENT; } s->top++; s->base[s->top]=e; return OK; } // 出栈 int Pop(SqStack * s,ElemType * e) ... { if(StackEmpty(*s)) return ERROR; *e=s->base[s->top]; s->top-=1; return OK;} // 栈顶元素 int GetTop(SqStack s,ElemType * e) ... { if(s.top==-1) return ERROR; else ...{ *e=s.base[s.top]; return OK; }} int main( int argc, char * argv[]) ... { int i; ElemType elem; SqStack s; InitStack(&s); for(i=0;i<5;i++) ...{ printf("input a number:"); scanf("%d",&elem); Push(&s,elem); printf(" "); } for(i=0;i<5;i++) ...{ if(Pop(&s,&elem)==OK) ...{ printf("%d ,",elem); } else ...{ printf("empty!"); break; } }}