栈的实现代码及操作: #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 0typedef 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; } }}