C 数据结构 笔记(三) —— 栈

来源:互联网 发布:直播app源码搭建 编辑:程序博客网 时间:2024/06/05 04:26

定义栈

typedef int ElemType;typedef struct {    ElemType *base;    ElemType *top;    int stacksize;} sqStack;

创建栈

#define STACK_INIT_SIZE 100void createStack(sqStack *s){    s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));    if (!s->base) exit(0);    s->top = s->base;    s->stacksize = STACK_INIT_SIZE;}

入栈

#define STACK_INCREMENT 10void push(sqStack *s, ElemType e){    if (s->top - s-> base >= s->stacksize)    {        s->base = (ElemType *)realloc(s->base, (s->stacksize + STACK_INCREMENT * sizeof(ElemType)));        if (!s->base) exit(0);        s->top = s->base + s->stacksize;        s->stacksize = s->stacksize + STACK_INCREMENT;    }    *(s->top) = e;    s->top++;}

出栈

void pop(sqStack *s, ElemType *e){    if (s->top == s->base) return;    *e = *--(s->top);}

栈容量

int length(sqStack *s){    return (s->top - s->base);}

清空栈

void clean(sqStack *s){    s->base = s->top;}

销毁栈

void destroyStack(sqStack *s){    int i, len;    len = s->stacksize;    for (i = 0; i < len; i++)    {        free(s->base);        s->base++;    }    s->base = s->top = NULL;    s->stacksize = 0;}