一、引言

二、栈的定义
三、栈的实现
typedef int STDataType;
typedef struct Stack
{
STDataType* _a;
int _top; // 栈顶
int _capacity; // 容量
}Stack;// 入栈
void StackPush(Stack* ps, STDataType data)
{
int NewCapacity = 0;
STDataType* mid = NULL;
if (ps->_top + 1 == ps->_capacity)
{
NewCapacity = ps->_capacity == 0 ? 4 : ps->_capacity * 2;
mid = (STDataType*)realloc(ps->_a,NewCapacity * sizeof(STDataType));
if(mid == NULL)
{
assert(mid);
}
ps->_a = mid;
ps->_capacity = NewCapacity;
}
ps->_a[++ps->_top] = data;
}// 获取栈顶元素
STDataType StackTop(Stack* ps)
{
assert(ps->_top + 1);
return ps->_a[ps->_top];
}void StackPop(Stack* ps)
{
assert(ps->_top + 1);
ps->_top--;
}// 获取栈中有效元素个数
int StackSize(Stack* ps)
{
return ps->_top + 1;
}