static int* s;
//static int* t;
static int index;
static int total;
void initalStack(int max)
{
if (max <= 0)
{
return;
}
s = (int*)malloc(sizeof(*s)*max);
if (!s)
{
printf("create failed");
return;
}
index = 0;
total = max;
}
static int IsEmpty()
{
return index == 0;
}
static int Find(int item)
{
if (IsEmpty())
{
return -1;
}
for (int i = 0;i < index;++i)
{
if (s[i] == item)
{
return i;
}
}
return -2;
}
static void Move(int aMove)
{
for (int i = aMove;i < index;++i)
{
s[i] = s[i+1];
}
index--;
}
void pushStack(int item)
{
int result = Find(item);
if ((result != -1)&&(result != -2))
{
Move(result);
}
if (index >= total)
{
s = realloc(s, sizeof(int)*(index+total/2));
total = index+total/2;
}
s[index++] = item;
}
int popStack()
{
if (IsEmpty())
{
return 0;
}
return s[--index];
}