* stack.h
*
* Created on: Nov 6, 2010
* Author: jenson
*/
#ifndef STACK_H_
#define STACK_H_
typedef int item_type;
typedef struct _stack_* stack;
struct _stack_{
item_type * item;
int top;
int size;
};
stack stack_init(int max);
int stack_empty(stack);
void stack_push(stack,item_type);
item_type stack_pop();
#endif /* STACK_H_ */
/*
* stack.c
*
* Created on: Nov 6, 2010
* Author: jenson
*/
#include "stack.h"
stack stack_init(int max){
stack s = malloc(sizeof(struct _stack_));
s->item = malloc(sizeof( item_type) * max);
s->size = sizeof(item_type) * max;
s->top = 0;
}
int stack_empty(stack s){
return s->top == 0;
}
void stack_push(stack s,item_type e){
s->item[s->top++] = e;
}
item_type stack_pop(stack s){
return s->item[--s->top];
}
测试代码:
/*
* main.c
*
* Created on: Nov 6, 2010
* Author: jenson
*/
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"
int main(){
stack s = stack_init(10);
if(s == NULL){
perror("stack_init");
exit(1);
}
int i = 0;
for(i = 1;i<=10;i++){
stack_push(s,i);
}
for(i =1;i<=10;i++){
printf("%d\t",stack_pop(s));
}
printf("\nis empty:%d\n",stack_empty(s));
free(s);
return 0;
}