#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