栈的定义及其基本运算
栈是限定仅在表的一端进行插入或删除的线性表。通常称允许插入、删除的这一端为
栈顶(Top),相应地,另一端称为栈底(Bottom)。不含元素的栈称为空栈。
假设栈 S=(a1,a2,…,an),则称a1 为栈底元素,an 为栈顶元素,如图 所示。根据
栈的定义可知,栈顶元素总是最后入栈并且是最先出栈的;栈底元素总是最先入栈并且是
最后出栈的。即栈是按后进先出的原则进行的。因此,栈又称为后进先出的线性表(简称
LIFO 结构)。
 

栈的基本运算有以下几种。
(1) 初始化Init_Stack(&S)。
初始条件:栈 S 不存在。
运算结果:构造一个空栈 S。
(2) 判栈空Empty_Stack(&S)。
初始条件:栈 S 已存在。
运算结果:若 S 为空栈,则返回1,否则返回0。
(3) 入栈 Push_Stack(&S,x)。
初始条件:栈 S 已存在。
运算结果:插入一个元素 x 为新的栈顶元素,栈发生变化。
(4) 出栈Pop_Stack(&S,&x)。
初始条件:栈 S 存在且非空。
运算结果:删除栈 S 的栈顶元素,并将其值通过参数x 返回,栈发生变化。
(5) 读栈顶元素Top_Stack(&S,&x)。
初始条件:栈 S 存在且非空。
运算结果:读取栈 S 的栈顶元素,并将其值通过参数x 返回,栈不变。
(6) 销毁栈Destroy_Stack(&S)。
初始条件:栈 S 已存在。
运算结果:栈 S 被销毁。
(7) 清空栈Clear_Stack(&S)。
初始条件:栈 S 已存在。
运算结果:栈 S 被清为空栈。
(8) 求栈的长度Length_Stack(&S)。
初始条件:栈 S 已存在。
运算结果:返回栈 S 中的元素个数,即栈的长度。

 

原文链接 : http://www.57itsq.com/read.php?tid-2101.html