首页 > 代码库 > 3.1_栈和队列_栈

3.1_栈和队列_栈

【栈的定义】

栈(stack)是限定仅在表尾进行插入和删除操作的线性表。

栈又称为后进先出(Last In First Out)线性表,简称LIFO结构。

(PS:定义中的表尾是指 栈顶!)

 

【几个关键词 】

[ 栈顶(top) ]

允许插入和删除的一端称为 栈顶。

[ 栈底(bottom) ]

栈顶的另一端称为 栈底。

[ 空栈 ]

不含任何数据元素的栈。

 

【栈的插入操作——进栈(push)】

  栈的插入操作,叫做进栈,也称为压栈、入栈。

技术分享

 

【栈的删除操作——出栈(pop)】

  栈的删除操作,叫做出栈,也称为弹栈。

       技术分享

 

【进栈出栈的变化形式】

如果3个整数1,2,3依次入栈,会有哪些出栈次序?

第一种:1-2-3进栈,即3-2-1出栈。

第二种:1进,1出,2斤,2出,3进,3出,进一个出一个,即1-2-3出栈。

第三种:1进,2进,2出,1出,3进,3出,即2-1-3出栈。

第四种:1进,1出,2进,3进,3出,2出,即1-3-2出栈。

第四种:1进,2进,2出,3进,3出,2出,即2-3-1出栈

 

【栈的抽象数据类型】

ADT 栈(stack)Data    同线性表。元素具有相同的类型,相邻元素具有前驱和后继关系。Operation    InitStack(*S)    初始化操作,建立一个空栈S    DestoryStack(*S) 若栈存在,则销毁它    ClearStack(*S)   将栈清空    StackEmpty(S)    若栈为空,返回true,否则返回false。    GetTop(S,*e)     若栈S存在且非空,用e返回S的栈顶元素。    Push(*S,e)       若栈S存在,插入新元素e到栈S中并成为栈顶元素。    Pop(*S,*e)       删除栈S中栈顶元素,并用e返回其值。    StackLength(S)   返回栈S的元素个数。endADT

 

3.1_栈和队列_栈