#include<stdio.h>
#define Stack_Init_size 20
#define StackIncrement 10
typedef struct {
int data[Stack_Init_size];
int top;//栈顶指针
int length;
}Sqstack;
void Init_satck(Sqstack &stack) {
stack.top = -1;
stack.length = 0;
}
bool StackEmpty(Sqstack& stack) {
if (stack.top==-1) {
return true;
}
return false;
}
void pop(Sqstack& stack,int &data) {//栈顶元素出栈
if (StackEmpty(stack)) {
printf("error\n");
return;
}
data = stack.data[stack.top];
stack.top--;
stack.length--;
}
bool StackFull(Sqstack& stack) {
if (stack.top== Stack_Init_size-1) {
return true;
}
return false;
}
void push(Sqstack& stack, int data) {//顺序栈中,栈顶指针top指向栈顶元素,而不是栈顶元素的下一个位置
if (StackFull(stack)) {
return;
}
stack.top++;
stack.data[stack.top] = data;
stack.length++;
}
void print(Sqstack& stack){
for (int i = stack.top; i >= 0;i--) {
printf("第%d个元素是%d\n",i,stack.data[i]);
}
printf("----------------------------------\n");
}
int main() {
Sqstack stack;
Init_satck(stack);
for (int i = 0; i <= 9;i++) {
push(stack,i);
}
print(stack);
for (int i = stack.length - 1; i > 3;i--) {
int b;
pop(stack,b);
printf("%d\n",b);
}
}