什么是栈:
栈是一种只能在一端插入或删除的线性表。在表中,允许进行插入或删除的一端叫做栈顶。(ps:我觉得栈就是一个数组,栈顶就是下标)表的另一端称为栈底,当栈中没有元素时称为空栈,栈的插入称为入栈或进战,栈中数据元素的删除称为出栈或退栈。
栈的特点:
后进先出(Last in First Out ),就是说后进的数据元素先出栈。每次进栈的数据元素都放在原来栈顶元素之前成为新的栈顶元素,每次出栈的数据元素都是当前栈顶元素。
栈的基本形式
ADK Stack
{
数据对象;
栈顶指针;
}
栈空条件;
s->top==-1
栈满条件:
s->top==maxsize-1
元素的进栈操作
先将栈顶指针加一,然后将元素放在栈顶指针处
元素出栈操作
先将栈顶元素取出,然后栈顶指针减一
栈的基本运算的实现
创建栈
void InStack(SqStack* &s)
{
s=(SqStack*)malloc(sizeof(SqStack));
s->top=-1;
}
销毁栈
void DestoryStack(SqStack* &s)
{
free(s);
}
判断栈是否为空
bool StackEmpty(SqStack* &s)
{
return (s->top==-1);
}
进栈
bool Push(SqStack* &s,int e)
{
s->top++;
s->data[s->top]=e;
return true;
}
出栈
bool Pop(SqStack* &s,int e)
{
if(s->top==-1)
return false;
e=s->data[s->top];
s->top--;
return true;
}
取栈顶元素
bool GetTop(SqStack* &s,int e)
{
if(s->top==-1)
return false;
e=s->data[s->top];
s->top--;
return true;
}