C++实现顺序栈

来源:互联网 发布:ca证书网络检测不通过 编辑:程序博客网 时间:2024/05/17 00:58

/* * Stack.h * *  Created on: Oct 6, 2015 *      Author: chris */#ifndef SQSTACK_H_#define SQSTACK_H_typedef int ElemType;enum {STACKINITSIZE = 10, STACKINCSIZE = 10};struct SqStack{ElemType* base;ElemType* top;int siz;};bool SqStackCreate(SqStack& stk);void SqStackDestroy(SqStack& stk);void SqStackClear(SqStack& stk);int  SqStackLength(SqStack& stk);bool SqStackEmpty(SqStack& stk);int  SqStackSize(SqStack& stk);bool SqStackPush(SqStack& stk, ElemType e);bool SqStackPop(SqStack& stk);bool SqStackTop(SqStack& stk, ElemType& e);void SqStackDisplay(SqStack& stk);#endif /* SQSTACK_H_ */



/* * SqStack.cpp * *  Created on: Oct 7, 2015 *      Author: chris */#include"SqStack.h"#include<iostream>using namespace std;bool SqStackCreate(SqStack& stk){stk.top = stk.base = new ElemType[STACKINITSIZE];if(!stk.base) return false;stk.siz = STACKINITSIZE;return true;}void SqStackDestroy(SqStack& stk){delete stk.base;stk.base = stk.top = NULL;stk.siz = 0;}void SqStackClear(SqStack& stk){stk.top = stk.base;}int  SqStackLength(SqStack& stk){return stk.top-stk.base;}bool SqStackEmpty(SqStack& stk){return stk.top == stk.base;}int  SqStackSize(SqStack& stk){return stk.siz;}bool SqStackPush(SqStack& stk, ElemType e){if(stk.top == stk.base + stk.siz) { //realloc.ElemType * temp = new ElemType[stk.siz + STACKINCSIZE];if(!temp) return false; //overflow.stk.siz = stk.siz + STACKINCSIZE;int cnt = stk.top - stk.base;for(int i = 0; i < cnt; ++i)temp[i] = stk.base[i];delete stk.base;stk.base = temp;stk.top = stk.base + cnt;}*stk.top++ = e;return true;}bool SqStackPop(SqStack& stk){if(stk.base == stk.top)return false;--stk.top;return true;}bool SqStackTop(SqStack& stk, ElemType &e){if(stk.base == stk.top)return false;e = *(stk.top-1);return true;}void SqStackDisplay(SqStack& stk){ElemType* pcur = stk.top;while(pcur != stk.base) {cout << *(pcur-1) << " ";--pcur;}cout << endl;}


0 0
原创粉丝点击