#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;
}

  

posted on 2018-10-04 09:16  一起_007  阅读(66)  评论(0编辑  收藏  举报