【栈的实现】

来源:互联网 发布:哈尔滨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(){}

原创粉丝点击