ADT

来源:互联网 发布:网络品牌推广策划书 编辑:程序博客网 时间:2024/05/25 19:55
仅供参考,正确性有待检查(QAQ)
/ADT SqStack#include<iostream>#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineOVERFLOW-1#defineINITLENGTH100#defineINCREASESIZE10using namespace std;typedef int SElemType;typedef int Status;typedef struct {SElemType *base;//栈底地址SElemType *top;//栈顶地址int stacksize;//栈容量}SqStack;//初始化空栈Status InitStack(SqStack &S) {S.base = (SElemType *)malloc(sizeof(SElemType) * INITLENGTH);if (!S.base)exit(OVERFLOW);S.top = S.base;S.stacksize = INITLENGTH;return OK;}//清空栈Status ClearStack(SqStack &S) {S.top = S.base;return OK;}//销毁栈Status DestroyStack(SqStack& S) {free(S.base);S.top = S.base = NULL;S.stacksize = 0;return OK;}//栈扩容void IncStackSize(SqStack &S) {S.base = (SElemType *)realloc(S.base, sizeof(SElemType)*(S.stacksize + INCREASESIZE));S.stacksize += INCREASESIZE;}//压栈Status Push(SqStack &S, SElemType e) {if (S.stacksize == S.top - S.base)IncStackSize(S);*(S.top++) = e;return OK;}//出栈Status Pop(SqStack &S, SElemType &e) {if (S.top == S.base) return ERROR;e = *(--S.top);return OK;}//判栈空Status IsEmpty(SqStack &S) {return S.top == S.base ? TRUE : FALSE;}//返回栈深int StackLength(SqStack &S) {return S.top - S.base;}//获取栈顶元素Status GetTop(SqStack &S, SElemType &e) {if (S.top == S.base)return ERROR;e = *(S.top - 1);return OK;}//栈元素遍历输出Status StackPrint(SqStack &S) {if (S.top == S.base)return ERROR;SElemType *curPtr;curPtr = S.base;while(curPtr < S.top) {if (curPtr == S.base)cout << *(curPtr);else cout << ' ' << *(curPtr);curPtr++;}cout << endl;return OK;}

原创粉丝点击