学习《数据结构与算法》这门课程的概念后我们学习了这门课程的第二个内容——堆栈和队列。首先我们学习到了堆栈:
1、栈的定义:堆栈简称为栈,是限定只能在表一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端称作“栈顶”,另一端称作“栈底”。通常将元素插入站定的操作称为“入栈”(进栈或压栈),称删除栈顶元素的操作为“出栈”。
其结构大致如下图所示:
2.栈的基本运算
堆栈的基本运算如下:
(1)Stacklit()初始化堆栈
(2)StackEmpty(s)判定栈s是否为空
(3)StackLength(s)求堆栈s的长度
(4)GetTop(s)获取栈顶元素的值
(5)Push(s,e)将元素e进栈
(6)Pop(s) 出栈(删除栈顶元素)
3.栈的存储结构
栈主要有以下两种存储结构:
(1)顺序栈——采用顺序结构存储
(2)链栈——采用链式结构存储
其中我们主要学了顺序栈的压入和弹出操作:
顺序栈的压入操作 :顺序栈的Top会指向实际元素的前一个(Top=-1), 在顺序栈压入元素时,Top先往上移动一格(Top++),然后元素才会进栈(Top先向前移动一格,需要入栈的元素会放进Top指向的位置)。
其操作如下图所示:
顺序栈的弹出操作:最后一个入栈的元素先弹出去(顺序栈中只有栈顶才能进行操作),和压入时相反只有元素弹出去了,Top才 会向下移动一格(Top–)。
其操作如下图所示:
4.栈满和栈空的条件
判断栈空和栈满的条件如下:
栈满:top=Maxsize(最大的空间大小)-1
栈空:top=-1