-
Notifications
You must be signed in to change notification settings - Fork 2
/
SqStack.cpp
54 lines (40 loc) · 1.07 KB
/
SqStack.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include "SqStack.h"
// 算法3.1 顺序栈的初始化
Status InitSqStack(SqStack &S) {
// 为顺序栈动态分配一个最大容量为MAXSIZE的数组空间
S.base = new SElemType[MAXSIZE];
// 存储分配失败
if (!S.base)
exit(OVERFLOW);
// top初始为base, 空栈
S.top = S.base;
// size置为栈的最大容量MAXSIZE
S.size = MAXSIZE;
return OK;
}
// 算法3.2 顺序栈的入栈
Status Push(SqStack &S, SElemType e) {
// 栈满
if (S.top - S.base == S.size)
return ERROR;
// 元素e压入栈顶, 栈顶指针加1
*(S.top++) = e;
return OK;
}
// 算法3.3 顺序栈的出栈
Status Pop(SqStack &S, SElemType &e) {
// 栈空
if (S.top == S.base)
return ERROR;
// 栈顶指针减1, 将栈顶元素赋给e
e = *(--S.top);
return OK;
}
// 算法3.4 取顺序栈的栈顶元素
SElemType GetTop(SqStack S) {
// 栈非空
if (S.top != S.base)
return *(S.top - 1); // 返回栈顶元素的值,栈顶指针不变
exit(OVERFLOW);
}