顺序栈的实现

#include <iostream>

using namespace std;

struct SqStack {

int* base;

int* top;

int stacksize;

};

int InitStack(SqStack& S) { //构造空栈

S.top = S.base = new int[1];

if (S.base == 0) return 0;

S.stacksize = 1;

return 1;

}

void enlage(SqStack& S) { //栈空间的扩充

int* newbase = new int[S.stacksize * 2];

if (newbase == 0) exit(0);

for (int i = 0; i < S.stacksize; ++i) {

newbase[i] = S.base[i];

}

delete S.base;

S.base = newbase;

S.top = &S.base[S.stacksize];

S.stacksize *= 2;

}

int Push(SqStack& S, int e) { //入栈

if (S.top - S.base == S.stacksize) {

enlage(S);

}

*S.top = e;

S.top++;

return 1;

}

int GetTop(SqStack S) { //得到栈顶元素

return *(S.top - 1);

}

void Pop(SqStack& S) { //出栈

S.top--;

}

bool empty(SqStack S) { //判断是否为空栈

if (S.base == S.top)

return true;

else

return false;

}

void Clear(SqStack& S) { //清空栈

delete S.base;

}

int main() {

SqStack S;

InitStack(S);

Push(S, 1);

Push(S, 2);

Push(S, 3);

Push(S, 4);

Push(S, 5);

Pop(S);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。