一、栈的定义、性质及存储方式
1、定义:栈是仅限定在表的一端操作的线性表
2、性质:先进后出(后进先出)
3、栈的存储方式:顺序存储和链式存储
二、顺序栈的基本操作
顺序栈的类型定义
typedef struct{
ElemType ST[maxsize];
int top;
}stack;
栈的压入操作
(1)首先判断是否栈满,若栈满,则输出“栈满溢出”;
(2)先指针top++,后入栈元素值;
Push(&S,e)
{
if(S.top==maxsize-1)
cout<<"栈满溢出"<<endl;
else
{
S.tpo++;
S.St[S.top]=e;
}
return S;
}
栈的弹出操作
(1)判断是否栈空,若是,则返回“栈空下溢”;
(2)取栈顶元素,指针top- -;
POP(&S,&e)
{
if(S.top==0)
cout<<"栈空下溢"<<endl;
else
{
e=S.ST[S.top];
S.top--;
}
return S;
}
读栈顶元素
当栈非空时,读取并返回栈顶元素,(该操作栈顶指针不变)
Gettop(S,&e)
{
if(S.top!=0)
e=S.ST[S.top];
return e;
}