来源:互联网 发布:传输网络结构 编辑:程序博客网 时间:2024/06/16 14:04

定义

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

把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In Fist Out)的线性表,简称LIFO。

注意:

1.栈是一个线性表,一种特殊的线性表,栈元素具备线性关系,也就是前驱和后继的关系。定义中规定了只能在线性表的表尾进行删除和插入操作,在栈中表尾称为栈顶,而不是栈底。

 2.栈的特殊性限制了这个线性表的插入和删除位置,始终是在栈顶进行,因此栈底是固定的,最先进栈的只能在栈底。

 

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

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


 

进栈出栈变化形式

栈对线性表的插入和删除的位置进行了限制,并没有对元素进出的时间进行限制,也就是说,在不是所有元素都进栈的情况下,事先进去的元素也可以出栈,只要保证是栈顶元素出栈就可以。

 

栈的抽象数据类型

ADT 栈(stack)

Data

         同线性表。元素具有相同的类型,相邻元素具有前驱和后继关系。

Operation

         InitStack(*S):初始化操作,建立一个空栈S。

         DestroyStack(*S):若栈存在,则销毁它。

         ClearStack(*S):将栈清空。

         StackEmpty(S):若栈为空,返回true,否则返回false。

         GetTop(S,*e):若栈存在且非空,用e返回S的栈顶元素。

         Push(*S,*e):若栈存在,插入新元素e到栈S中并成为栈顶元素。

         Pop(*S,*e):删除S中栈顶元素,并用e返回其值。

         StackLength(S):返回栈S的元素个数。

endADT


0 0
原创粉丝点击