数据结构之栈(一)--顺序栈

来源:互联网 发布:c语言文件打开方式 编辑:程序博客网 时间:2024/05/16 08:50
//顺序栈的实现#include <stdio.h>#include <malloc.h>#include <stdlib.h>#define OK                 1#define ERROR              0#define STACK_INIT_SIZE    100 //储存空间初始分配量#define STACKINCREASE      10 //储存空间分配增量typedef int SElemType;//定义栈中元素类型typedef int Status;typedef struct{    SElemType *base;//基指针,指向栈底    SElemType *top;//栈顶指针    int stacksize;//栈的容量}Stack;//定义一个栈Status InitStack(Stack &S)//初始化一个空栈{    S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));    if(!S.base)exit(-2);    S.top = S.base;    S.stacksize = STACK_INIT_SIZE;    return OK;}Status Push(Stack &S, SElemType &e)//进栈{    if(S.top - S.base >= S.stacksize)//判断是否满栈,若满栈,则重新分配增量空间    {        S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREASE) * sizeof(SElemType));        if(!S.base)exit(-2);        S.top = S.base + S.stacksize;        S.stacksize += STACKINCREASE;    }    *S.top++ = e;    return OK;}Status Pop(Stack &S, SElemType &e){    if(S.top == S.base)        return ERROR;    e = *(S.top - 1);    S.top--;    return OK;}bool Is_empty(Stack &S){    if(S.top == S.base)        return true;    else        return false;}Status GetTop(Stack &S,SElemType &e){    if(S.top == S.base)        return ERROR;    e = *(S.top - 1);    return OK;}int main(){    Stack S;    SElemType e1,e2,e3;    e1 = 2;    InitStack(S);    Push(S,e1);    Pop(S,e2);    printf("%d\n",e2);    printf("%d\n",Is_empty(S));    Push(S,e1);    GetTop(S,e3);    printf("%d",e3);}

原创粉丝点击