【栈的实现】
来源:互联网 发布:哈尔滨java培训学校 编辑:程序博客网 时间:2024/05/17 05:54
#include<cstdio>#include<cstdlib>#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef int Status;typedef int SElemType;typedef struct { int stacksize; SElemType *base; SElemType *top; }SqStack ;Status InitStack(SqStack &S){ S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit(-1); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return 1;}Status Push(SqStack &S,SElemType e){ if(S.top-S.base>=STACK_INIT_SIZE){ S.base=(SElemType*)realloc(S.base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(SElemType)); if(!S.base) exit(-1); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return 1;}Status Pop(SqStack &S,SElemType &e){ if(S.base==S.top) return 0; e=*--S.top; return 1;}Status GetTop(SqStack S,SElemType &e){ if(S.top==S.base) return 0; e=*(S.top-1); return 1;}Status StackEmpty(SqStack S){ if(S.top==S.base) return 1; else return 0;}int StackLength(SqStack &S){ return (S.top - S.base);}void DestroyStack(SqStack &S){ free(S.base); S.base=NULL; S.top=NULL; S.stacksize=0;}void ClearStack(SqStack &S){ S.top=S.base;}int main(){}