1、栈定义
栈(stack)是限定仅在表的一端进行插入、删除操作的线性表,允许插入和删除的一端称为栈顶(Top),表的另一端被称为栈底(Bottom)。当栈中没有元素时称为空栈。栈的插入操作被形象地称为进栈或入栈,删除操作称为出栈或退栈。
2、栈的特性
先进后出
3、栈的结构及实现
3.1顺序栈
栈作为一种特殊的线性表,在计算机中主要有两种基本的存储结构:顺序存储结构和链式存储结构。我们称顺序存储的栈为顺序栈,链式存储的栈为链栈。
顺序栈是顺序存储结构实现的栈,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈操作的特殊性,还必须附设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。通常以top=-1表示空栈,top=maxsize-1为满栈。(maxsize表示最大长度)
顺序栈的存储结构的进栈和出栈过程如下图:
3.1.2顺序栈的实现
(1)构造函数
SeqStack::SeqStack()
{
top=-1;
RSize=maxSize;
Sstack=new T[RSize];
if(Sstack==NULL)
{
cout<<"分配内存失败,退出";
exit(1);
}
}
(2)析构函数
SeqStack::~SeqStack()
{
if(Sstack!=NULL)
delete[] Sstack;
}
(3)入栈操作
void SeqStack::push(T x)
{
if(isFull())
overflow();
Sstack[++top]=x;
}
(4)出栈操作
bool SeqStack::pop(T& x