#include <iostream> using namespace std; #define STACK_INIT_SZIE 100 #define INCREAMENTSIZE 10 typedef struct { int * base, *top; int stacksize; }Stack; bool init(Stack & S) { S.base = (int *)malloc(STACK_INIT_SZIE * sizeof(int)); if (!S.base) return false; S.top = S.base; S.stacksize = STACK_INIT_SZIE; return true; } bool gettop(Stack & S,int & item) { if (S.top == S.base) { return false; } item = *(S.top - 1); return true; } int stacklen(Stack & S) { return S.top - S.base; } bool isempty(Stack & S) { return S.top == S.base ? true : false; } bool push(Stack & S,int item) { if (S.top - S.base == S.stacksize) { S.base = (int *)realloc(S.base,(S.stacksize + INCREAMENTSIZE)*sizeof(int)); if (!S.base) return false; S.top = S.base + S.stacksize; S.stacksize += INCREAMENTSIZE; } *(S.top++) = item; return true; } bool pop(Stack & S, int & item) { if (S.top == S.base) return false; item = *(--S.top); return true; }
很懒