#include<stdio.h>
#include<stdlib.h>
#define size 10
enum return_val{
create_ok=100,create_no,full_ok,full_no,empty_ok,empty_no,push_ok,push_no,pop_no,pop_ok
};
struct stack_struct{
int top;
int stack_data[size];
};
typedef struct stack_struct stack;
typedef stack * Stack;
int create_stack(Stack * stack)
{
*stack=(Stack)malloc(sizeof(stack));
if(*stack==NULL)
{
return create_no;
}
return create_ok;
}
void init_stack(Stack stack)
{
stack->top=-1;
}
int is_empty(Stack stack)
{
if(stack->top==-1)
{
return empty_ok;
}
return empty_no;
}
int is_full(Stack stack)
{
if(stack->top >= size-1)
{
return full_ok;
}
return full_no;
}
int push(Stack stack,int num)
{
if(full_no==is_full(stack))
{
stack->top++;
stack->stack_data[stack->top]=num;
return push_ok;
}
printf("stack is full\n");
return push_no;
}
int pop(Stack stack)
{
int num;
if(empty_ok==is_empty(stack))
{
printf("stack is empty\n");
return pop_no;
}
else
{
num=stack->stack_data[stack->top];
stack->top--;
return num;
}
}
int main()
{
Stack stack=NULL;
if(create_ok==create_stack(&stack))
{
printf("ceate stack success\n");
}
init_stack(stack);
int i;
for(i=0;i<15;i++)
{
if(push_ok==push(stack,i+1))
{
printf("push success\n");
}
else{
printf("push fail\n");
}
}
int num;
for(i=0;i<15;i++)
{
num=pop(stack);
if(pop_no!=num)
{
printf("the pop num=%d\n",num);
}
}
free(stack);
return 0;
}
09-30