简单顺序栈的基本功能的实现
#include<stdio.h>
#include<stdlib.h>
#define STACK_SINIT_SIZE 100
#define STACKINCREMENT 10
typedef struct {
int* base;
int* top;
int stacksize;
}SqStack;
//构造空栈
void InitStack(SqStack& S) {
S.base = (int*)malloc(STACK_SINIT_SIZE * sizeof(int));
if (!S.base) exit(0);
S.top = S.base;
S.stacksize = STACK_SINIT_SIZE;
}
//取栈顶
void GetTop(SqStack S, int& e) {
if (S.top == S.base) exit(0);
e = *(S.top - 1);
}
//压栈
void Push(SqStack& S, int e) {
if (S.top - S.base == S.stacksize) {
S.base = (int*)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(int));
if (!S.base) exit(0);
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
}
//弹栈
void Pop(SqStack& S, int& e) {
if (S.base == S.top) exit(0);
e = *(--S.top);
}
//清空
void Clear(SqStack& S) {
S.top = S.base;
}
//判空
bool IsEmpty(SqStack S) {
return S.base == S.top;
}
//打印
void Print(SqStack& S) {
while (!IsEmpty(S)) {
printf("%d ", *(--S.top));
}
}```