数据结构

来源:互联网 发布:淘宝买一脚蹬哪家店好 编辑:程序博客网 时间:2024/06/03 22:49

栈-基本操作

//栈结构const int STACKINITSIZE = 100;const int STACKADDSIZE = 20;typedef struct{    int *base, *top;    int StackSize;}Stack;bool StackInit(Stack &S);bool StackDestroy(Stack &S);bool StackClear(Stack &S);bool StackEmpty(Stack &S);int StackLength(Stack S);bool StackGetTop(Stack S,int &e);bool StackPush(Stack &S,int e);bool StackPop(Stack &S,int &e);void StackDisplay(Stack S);#include<iostream>using namespace std;bool StackInit(Stack &S){    S.base = (int*)malloc(STACKINITSIZE*sizeof(int));    if (!S.base)        return 0;    S.top = S.base;    S.StackSize = STACKINITSIZE;    return 1;}bool StackDestroy(Stack &S){    S.top = S.base;    free(S.base);    S.top = S.base = NULL;    return 1;}bool StackClear(Stack &S){    S.top = S.base;    return 1;}bool StackEmpty(Stack &S){    if (S.top == S.base)        return 1;    else                        return 0;}int StackLength(Stack S){    if (S.top == S.base)            return 0;    else                            return (S.top - S.base);}bool StackGetTop(Stack S,int &e){    if (S.top == S.base){        cout << "这是空栈!" << endl;        return 0;    }    else{        e = *--S.top;            return 1;    }}bool StackPush(Stack &S,int e){    if ((S.top - S.base) == STACKINITSIZE){        int *temp;        temp = (int*)realloc(S.base, (STACKADDSIZE + S.StackSize));        if (!temp)          return 0;        S.base = temp;        S.top = S.base + STACKINITSIZE;        S.StackSize = STACKADDSIZE + S.StackSize;    }    *S.top++ = e;    return 1;}bool StackPop(Stack &S,int &e){    if (S.top == S.base){        cout << "栈已经为空!" << endl;        return 0;    }    else{        S.top--;        e = *S.top;        return 1;    }}void StackDisplay(Stack S){    if (StackEmpty(S)){        cout << "空栈!" << endl;    }    else{        while (S.top != S.base){            cout << *--S.top;        }    }}
0 0
原创粉丝点击