栈(stack)
栈是一种先进后出的线性表,只允许在一端进行插入和删除操作。我们把允许进行插入和删除操作的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据的栈称为空栈。
栈的顺序储存结构
栈的顺序储存结构是线性表顺序储存的简化,我们称为顺序栈。
顺序栈的结构定义
typedef struct sta{
int data[MAXSIZE]; //数组长度定义到可能需要到的最大值
int top;
}Stack;
顺序栈的初始化
void InitStack(Stack** s) {
*s = (Stack*)malloc(sizeof(Stack)); //分配内存空间
(*s)->top = -1; //初始化栈为空
}
判断栈是否为空
int StackEmpty(Stack* s) { //判断栈是否为空
if (s->top == -1) {
return 1;
}
return 0;
}
顺序栈的入栈
void Push(Stack* s, int e) {
if (s->top == MAXSIZE - 1) { //栈满
return;
}
s->top++; //栈顶指针加一
s->data[s->top] = e; //将新数据赋值给栈顶空间
}
顺序栈的出栈
void Pop(Stack* s, int* e) {
if (s->top == -1) { /