#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include "stack.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifdef STACK_LINK
typedef struct stack{
int num;
struct stack *next;
}STACK;
STACK *g_pStack = NULL;
void push(int i)
{
STACK *pEle = (STACK*)malloc(sizeof(STACK));
if(pEle == NULL)
{
return;
}
memset(pEle,0,sizeof(STACK));
pEle->num = i;
if(g_pStack == NULL)
{
g_pStack = pEle;
}
else
{
pEle->next = g_pStack;
g_pStack = pEle;
}
return;
}
int pop()
{
int tempRe = 0;
STACK *tempFree = 0;
if(g_pStack == NULL)
{
return 0;
}
tempRe = g_pStack->num;
tempFree = g_pStack;
g_pStack = g_pStack->next;
free(tempFree);
return tempRe;
}
int empty()
{
return (g_pStack)?0:1;
}
#endif
#ifdef STACK_ARRAY
int g_stack[MAX_STACK] = {0};
unsigned int g_pos = 0;
void push(int i)
{
if(g_pos == MAX_STACK)
{
return;
}
g_stack[g_pos++] = i;
return;
}
int pop()
{
if(g_pos == 0)
{
return 0;
}
return g_stack[--g_pos];
}
int empty()
{
return (g_pos == 0)?1:0;
}
#endif
#ifdef __cplusplus
}
#endif