关于顺序栈的学习
#define maxline 1000
//栈的定义
typedef struct {
int* base;
int* top;
int stacksize;
}sqstack;
//初始化
void InitStack(SqStack& S) {
S.base = new sqstack[maxline];
if (!S.base)exit;
S.base = S.top;
S.stacksize = maxline;
}
//入栈
int Push(SqStack& S, SElemType e) {
if (S.top - S.base == maxline)
return 0;
else {
*S.top = e;
S.top++;
return 1;
}
}
//出栈
int Pop(SqStack& S, SElemType& e) {
if (S.top == S.base)
return 0;
else {
e = *(--S.top);
return 1;
}
}
//取栈顶元素
SElemType GetTop(SqStack S) {
if (S.top != S.base)
return *(S.base - 1);
}
//遍历输出栈
void printStack(SqStack S) {
printf("栈底:");
int* p = S.base;
while (p != S.top) {
printf("%d", *p);
p++;
}
printf("\n");
}
感悟:
1.top是指向栈最后一个单位的下一个位置的;
2.栈S.base与S.top相等时表示栈为空;
3.S.top-S.base=maxsize时,表示栈满;