#include <stdio.h>
#include <stdlib.h>
#define MAX 10
#include <stdlib.h>
#define MAX 10
struct stack
{
int stack[MAX];
int top;
};
{
int stack[MAX];
int top;
};
enum return_result
{
FULL_OK,
FULL_NO,
PUSH_OK,
PUSH_NO,
EMPTY_OK,
EMPTY_NO,
POP_NO = 0xefffffff
};
{
FULL_OK,
FULL_NO,
PUSH_OK,
PUSH_NO,
EMPTY_OK,
EMPTY_NO,
POP_NO = 0xefffffff
};
typedef struct stack Stack;
void create_stack(Stack **stack);
void init_stack(Stack **stack);
int push_stack(Stack **stack,int num);
int is_full(Stack **stack);
int pop_stack(Stack **stack);
int is_empty(Stack **stack);
void init_stack(Stack **stack);
int push_stack(Stack **stack,int num);
int is_full(Stack **stack);
int pop_stack(Stack **stack);
int is_empty(Stack **stack);
int main()
{
Stack *stack;
int i,loc;
{
Stack *stack;
int i,loc;
create_stack(&stack);
init_stack(&stack);
for(i = 0;i < MAX;i++)
{
if(push_stack(&stack,i+1) == PUSH_OK)
{
printf("push ok!\n");
}
}
for(i = 0;i < 10;i++)
{
loc = pop_stack(&stack);
if(loc == POP_NO)
{
break;
}
printf("stack[%d] = %d \n",i,loc);
}
return 0;
}
{
if(push_stack(&stack,i+1) == PUSH_OK)
{
printf("push ok!\n");
}
}
for(i = 0;i < 10;i++)
{
loc = pop_stack(&stack);
if(loc == POP_NO)
{
break;
}
printf("stack[%d] = %d \n",i,loc);
}
return 0;
}
void create_stack(Stack **stack)
{
*stack = (Stack *)malloc(sizeof(Stack));
if(*stack == NULL)
{
printf("malloc error !\n");
exit(-1);
}
}
{
*stack = (Stack *)malloc(sizeof(Stack));
if(*stack == NULL)
{
printf("malloc error !\n");
exit(-1);
}
}
void init_stack(Stack **stack)
{
(*stack)->top = -1;
}
{
(*stack)->top = -1;
}
int push_stack(Stack **stack,int num)
{
if(is_full(stack) == FULL_OK)
{
printf("stack is full !\n");
return PUSH_NO;
}
else
{
((*stack)->top)++;
((*stack)->stack[((*stack)->top)]) = num;
return PUSH_OK;
}
}
{
if(is_full(stack) == FULL_OK)
{
printf("stack is full !\n");
return PUSH_NO;
}
else
{
((*stack)->top)++;
((*stack)->stack[((*stack)->top)]) = num;
return PUSH_OK;
}
}
int is_full(Stack **stack)
{
if((*stack)->top == MAX)
{
return FULL_OK;
}
else
{
return FULL_NO;
}
}
{
if((*stack)->top == MAX)
{
return FULL_OK;
}
else
{
return FULL_NO;
}
}
int pop_stack(Stack **stack)
{
if(is_empty(stack) == EMPTY_OK)
{
return POP_NO;
}
else
{
return ((*stack)->stack[((*stack)->top)--]);
}
{
if(is_empty(stack) == EMPTY_OK)
{
return POP_NO;
}
else
{
return ((*stack)->stack[((*stack)->top)--]);
}
}
int is_empty(Stack **stack)
{
if((*stack)->top == -1)
{
return EMPTY_OK;
}
else
{
return EMPTY_NO;
}
}
{
if((*stack)->top == -1)
{
return EMPTY_OK;
}
else
{
return EMPTY_NO;
}
}