前言
栈是一种特殊的线性结构,其特殊在于它是操作受限的线性表,仅限于在表尾进行插入和删除操作的线性表。
提示:以下是顺序栈的实现代码
1.栈的基本操作
代码如下(示例):
//初始化一个栈
void InitStack(SqStack& S)
{
S.base = (SElemType *)malloc(sizeof(SElemType));
if (!S.base)//申请内存失败
exit(ERROR);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
}
//销毁栈
void DestoryStack(SqStack& S)
{
free(S.base);//释放栈空间
S.top = S.base = NULL;//栈顶,栈底指针都设为空
S.stacksize = 0;
}
//清空栈
void ClearStack(SqStack& S)
{
S.top = S.base;//栈顶指针指向栈底
}
//判断栈是否为空
Status StackEmpty(SqStack& S)
{
if (S.top == S.base)
return TRUE;
else
return FALSE;
}
//返回栈的元素个数,即栈的长度
int StackLength(SqStack S)
{
return S.top - S.base;
}
//用e返回栈顶元素
Status GetTop(SqStack S, SElemType &e)
{
if (S.top > S.base)
{
e = *(S.top - 1);//将栈顶元素赋值给e
return OK;
}
else
return ERROR;
}
//插入元素e为新的栈顶元素
void