本文最后更新于:3 个月前
顺序栈的特点和完整代码实现。
顺序栈(SqStack)
注:SqStack为简写,完整名为Sequential Stack。
特点
- 栈也是一种线性表。
- 只允许在一端进行插入和删除的线性表。
- 先进后出。
完整代码实现
代码结构
- 定义顺序栈结构
- 初始化顺序栈
- 判断顺序栈空方法
- 顺序栈的进栈方法
- 顺序栈的出栈方法
- 顺序栈的读取栈顶元素方法
- 主函数用以测试
具体实现
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| #include<iostream> #include<string>
using namespace std;
#define MAXSIZE 10
typedef struct { int data[MAXSIZE]; int top; }SqStack;
void InitStack(SqStack &S) { S.top = -1; }
bool StackEmpty(SqStack S) { if (S.top == -1) { return true; } else { return false; } }
bool Push(SqStack& S, int e) { if (S.top == MAXSIZE-1) { return false; } S.top++; S.data[S.top] = e; return true; }
bool Pop(SqStack& S, int &e) { if (S.top == -1) { return false; } e = S.data[S.top]; S.top--; return true; }
void GetTop(SqStack S,int &e) { if (S.top == -1) { return; } e = S.data[S.top]; }
int main() { SqStack S; InitStack(S); cout <<"栈是否为空:" << StackEmpty(S) << endl; int a = 10; int b; cout << "入栈:" << Push(S, a)<< endl; GetTop(S, b); cout<<"读取栈顶元素:" <<b <<endl; cout << "出栈:" << Pop(S, a) << endl; cout << "栈是否为空:" << StackEmpty(S) << endl; return 0; }
|