#include <stdio.h>
#define MAXSIZE 10
// 1.1 顺序栈操作 创销 增删改查
// 结构体和顺序表差不多,都包含了一个数组存储元素,顺序表有长度,栈中top指向顶部元素或顶部元素+1的位置
// top指针作用主要是为出栈、入栈、判断是否栈满等操作服务
typedef struct{
int top;
int data[MAXSIZE];
}SeqStack;
// 初始化
// (1) 让栈top指针为-1
bool init_stack(SeqStack &stack){
stack.top = -1; // 也可以初始化为0,不过入栈应该先插入元素再上移,出栈应该先下移再返回值
return true;
}
// 入栈
// (1) 判断是否满足入栈条件: 栈未满
// (2) 让指针上移一位,然后插入元素
bool push(SeqStack &stack, int ele){
if (stack.top == MAXSIZE){
return false;
}
stack.top++;
stack.data[stack.top] = ele;
return true;
}
// 出栈
// (1) 判断是否栈空
// (2) 先返回元素,然后指针下移一位
bool pop(SeqStack &stack, int &ele){
if (stack.top == -1){
return false;
}
ele = stack.data[stack.top];
stack.top--;
return true;
}
// 查看栈顶元素
bool get_ele(SeqStack stack){
if (stack.top == -1){
return false;
}
return stack.data[stack.top];
return true;
}
int main() {
SeqStack stack;
init_stack(stack);
push(stack, 100);
push(stack, 200);
push(stack, 300);
int ele;
pop(stack,ele);
printf("%d\t",ele);
pop(stack,ele);
printf("%d\t",ele);
pop(stack,ele);
printf("%d\t",ele);
}