#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;
}
很懒
浙公网安备 33010602011771号