struct NNode
{
int data;
int next;
};
typedef int INT;
typedef struct NNode* Link;
void DataStacksArrayInital(INT);
void DataStacksArrayPush(INT);
INT DataStacksArrayPop();
void DataStacksArrayFree();
INT DataStacksArrayView();
Link array;
INT BaseTotal;
INT MaxTotal;
void DataStacksArrayInital(INT max)
{
if (max <= 0)
{
printf("max <= 0");
return;
}
array = malloc(sizeof(INT)*max);
if (!array)
{
printf("create failed!!!");
return;
}
BaseTotal = 0;
MaxTotal = max;
}
void DataStacksArrayPush(INT item)
{
if (BaseTotal >= MaxTotal)
{
array = realloc(array, (BaseTotal + MaxTotal/2)*sizeof(INT));
if (!array)
{
printf("realloc create failed!!");
return;
}
MaxTotal = BaseTotal + MaxTotal/2;
}
array[BaseTotal].data = item;
int temp = BaseTotal;
BaseTotal += 1;
array[temp].next = BaseTotal;
}
INT DataStacksArrayPop()
{
if (BaseTotal < 0)
{
return 0;
}
return array[--(array[--BaseTotal].next)].data;
}
void DataStacksArrayFree()
{
free(array);
}