1 #include <iostream>
2 #include <stdlib.h>
3 /*栈最大长度宏*/
4 #define STACK_MAX_SIZE 100
5 using namespace std;
6 /*元素类型*/
7 typedef int ElemType;
8 /*顺序栈的结构体*/
9 typedef struct seqstack{
10 /*存放元素*/
11 ElemType data[STACK_MAX_SIZE];
12 /*栈顶指针 指向元素后一个位置*/
13 size_t p_top;
14 /*栈大小*/
15 size_t stack_size;
16 } SeqStack;
17 /*初始化*/
18 void InitStack(SeqStack *seqstack){
19 seqstack->p_top = 0;
20 seqstack->stack_size = 0;
21 }
22 /*判断栈空 空返回True*/
23 bool StackEmpty(SeqStack seqstack){
24 return (seqstack.stack_size == 0);
25 }
26 /*判断栈满 满返回True*/
27 bool StackFull(SeqStack seqstack){
28 return (seqstack.stack_size == STACK_MAX_SIZE);
29 }
30 /*入栈操作*/
31 bool Push(SeqStack * seqstack, ElemType data){
32 /*如果栈满 返回False*/
33 if(StackFull(*seqstack)) return 0;
34 /*写入元素值,栈顶指针向后移动*/
35 seqstack->data[seqstack->p_top++] = data;
36 /*修改长度*/
37 seqstack->stack_size++;
38 return 1;
39 }
40 bool Pop(SeqStack* seqstack, ElemType* data){
41 /*如果空栈,返回False*/
42 if(StackEmpty(*seqstack)) return 0;
43 /*由于栈顶指针指向栈顶元素后一个位置,需要-1*/
44 (*data) = seqstack->data[seqstack->p_top -1];
45 /*修改栈的长度*/
46 seqstack->stack_size--;
47 /*栈顶向前移动*/
48 seqstack->p_top--;
49 return 1;
50 }
51 int main()
52 {
53 SeqStack mystack;
54 InitStack(&mystack);
55 Push(&mystack, 5);
56 Push(&mystack, 6);
57 int a = -1;
58 Pop(&mystack, &a);
59 cout << a << endl;
60 return 0;
61 }