#include "stdlib.h"
#include "stdio.h"
#define N 32
typedef int datatype_t;
typedef struct {
datatype_t data[N];
int top;
} seqstack_t;
//创建一个空栈
seqstack_t *seqstack_create() {
seqstack_t *stack = (seqstack_t *) malloc(sizeof(seqstack_t));
if (stack == NULL) {
exit(0);
}
stack->top = 0;
return stack;
}
int seqstack_full(seqstack_t *stack) {
return stack->top == N ? 1 : 0;
}
int seqstack_push(seqstack_t *stack, datatype_t value) {
if (seqstack_full(stack)) {
return -1;
}
stack->data[stack->top] = value;
stack->top++;
return 1;
}
int seqstack_empty(seqstack_t *stack) {
return stack->top == 0 ? 1 : 0;
}
datatype_t seqstack_pop(seqstack_t *stack) {
if (seqstack_empty(stack)) {
return -1;
}
datatype_t value = stack->data[stack->top - 1];
stack->top--;
return value;
}
void seqstack_show(seqstack_t *stack) {
for (int i = 0; i < stack->top; i++) {
printf("%d ", stack->data[i]);
}
printf("\n");
}
int main() {
seqstack_t *stack = seqstack_create();
seqstack_push(stack, 11);
seqstack_push(stack, 12);
seqstack_push(stack, 13);
seqstack_push(stack, 14);
seqstack_show(stack);
datatype_t value = seqstack_pop(stack);
printf("出栈值为 %d \n", value);
seqstack_show(stack);
return 0;
}
运行效果