#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct stack_tag{
int top;
int num;
int *data;
} stack;
stack * stack_init(int num){
stack *s = (stack*)malloc(sizeof(stack));
s->num = num;
s->data = (int*)malloc(sizeof(int) * num);
s->top = -1;
return s;
}
void stack_destroy(stack *s){
free(s->data);
free(s);
}
int stack_push(stack *s, int data){
if(s->top == s->num - 1)
return -1;
s->data[++s->top] = data;
return 0;
}
int stack_pop(stack *s, int *data){
if(s->top == -1){
return -1;
}
*data = s->data[s->top --];
return 0;
}
bool stack_empty(stack *s){
return s->top == -1;
}
int main() {
stack *s = stack_init(3);
stack_push(s, 1);
stack_push(s, 2);
while(!stack_empty(s)){
int data = 0;
stack_pop(s, &data);
printf("%d\n", data);
}
return 0;
}
原文:http://www.cnblogs.com/moxiaopeng/p/4912430.html