栈
栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。不含任何元素的栈称为空栈,栈又称为后进先出(LIFO)的线性表。
栈的定义
#define MAX 100
typedef int datatype;
typedef struct {
datatype arry[MAX];
int top;//表示栈内元素个数
}Stack;
初始化栈
//初始化栈
void StackInit(Stack *ps)
{
ps->top = 0;
}
销毁栈
//销毁栈
void StackDestroy(Stack *ps)
{
ps->top = 0;
}
入栈
//入栈
void StackPush(Stack *ps, datatype data)
{
assert(ps->top < MAX);
ps->arry[ps->top++] = data;
}
出栈
//出栈
void StackPop(Stack *ps)
{
assert(ps->top > 0);
ps->top--;
}
返回栈顶元素
//返回栈顶元素
datatype StackTop(const Stack *ps)
{
assert(ps->top > 0);
return ps->arry[ps->top - 1];
}
返回栈内元素个数
//返回栈元素个数
int StackSize(const Stack *ps)
{
return ps->top;
}
判断栈是否为空
//判断栈是否为空
int IsEmpty(const Stack *ps)
{
return ps->top == 0 ? 1 : 0;//如果元素个数为0返回1,否则返回0
}