【考研数据结构——C语言描述】第三章 栈

25计算机考研,数据结构知识点整理(内容借鉴了王道408+数据结构教材),还会不断完善所整理的内容,后续的内容也会不断更新(可以关注),若有错误和不足欢迎各位朋友指出!

目录

一.栈的基本概念


一.栈的基本概念

栈(stack)作为一种限定性线性表,是将线性表的插入和删除操作限制为仅在表的一端(表尾)进行,通常将表中允许进行插入、删除操作的一端称为栈顶(Top)(表尾),栈顶的当前位置是动态变化的它由一个称为栈顶指针的位置指示器来指示;将表的另一端称为栈底(表头)。当栈中没有元素时称为空栈。栈的插入操作称为进栈或入栈,删除操作称为删栈或退栈。

根据上述定义,每次进栈的元素都被放在原栈顶元素之上而成为新的栈顶,而每次出栈的总是当前栈中“最新”的元素,即最后进栈的元素。在图 3.1(a)所示的栈中,元素是以a_{1},... ,a_{i-1}a_{i},...,a_{n}的顺序进栈的,而退栈的次序却是a_{n},... ,a_{i}a_{i-1}a_{1}。栈的操作是按后进先出的原则进行的,因此,栈又称为后进先出(last in first out,LFO)的线性表,简称为IFO表。在日常生活中也可以见到很多后进先出的例子,例如,手枪子弹夹中的子弹,子弹装入与子弹出膛均在弹夹的一端进行,先装人的子弹后发出,而后装入的子弹先发出;又如,如图3.1(b)所示的铁路调度站的表示,都是栈结构的实际应用。
栈的基本操作除了进栈(栈顶插入)、出栈(删除栈顶)外,还有建立(栈的初始化)、判空、判满及取栈顶元素等。下面给出栈的抽象数据类型定义。

ADT Stack{
数据对象:可以是任意类型的数据,但必须性质相同
结构关系:栈中数据元素之间是线性关系。
基本操作:
① InitStack(S)
操作前提:S为未初始化的栈。
操作结果:将S初始化为空栈。

②ClearStack(S)
操作前提:栈S已经存在。
操作结果:将栈S置成空栈。

③IsEmpty(S)
操作前提:栈S已经存在。
操作结果:判栈S是否为空栈。若S为空栈,则返回TRUE,否则返回FALSE。

④IsFull(S)
操作前提:栈S已经存在。
操作结果:判栈S是否为满栈。若S栈已满,则返回TRUE,否则返回FALSE。

⑤Push(S,x)
操作前提:栈S已经存在。
操作结果:在S的顶部插入(亦称入栈)元素x。若S栈未满,将x插入栈顶位置,并返回TRUE;若栈已满,则返回FALSE,表示操作失败。

⑥ Pop(S,x)
操作前提:栈S已经存在。
操作结果:删除(亦称出栈)栈S的顶部元素,并用x带回该值,返回TRUE;若栈为空,返回值为FALSE,表示操作失败。

⑦ GetTop(S,x)操作前提:栈S已经存在。
操作结果:取栈S的顶部元素赋给x所指向的单元,也称读栈顶。该操作与Pop(S,x)的不同之处在于,GetTop(S,x)不改变栈顶的位置。若栈为空,返回值为FALSE,表示操作失败。
}ADT Stack;

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 21:06:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 21:06:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 21:06:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 21:06:03       20 阅读

热门阅读

  1. winhttp劫持dll

    2024-06-13 21:06:03       8 阅读
  2. 赚流量卷,晚点删

    2024-06-13 21:06:03       7 阅读
  3. A.计算圆周率——无穷级数法

    2024-06-13 21:06:03       9 阅读
  4. 【一个 Android 反编译神器jadx】

    2024-06-13 21:06:03       8 阅读
  5. 热门开源项目推荐:技术与地址概览

    2024-06-13 21:06:03       13 阅读
  6. Codeforces Round 952 (Div. 4)(实时更新)

    2024-06-13 21:06:03       11 阅读
  7. 算法设计与分析复习(第5章 回溯法)

    2024-06-13 21:06:03       8 阅读
  8. 2563. 统计公平数对的数目

    2024-06-13 21:06:03       8 阅读
  9. 笔记97:C++ 中 string / char 和 int 之间相互转化

    2024-06-13 21:06:03       9 阅读
  10. (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程

    2024-06-13 21:06:03       8 阅读
  11. cuda 架构设置

    2024-06-13 21:06:03       7 阅读
  12. 【npm如何发布自己的插件包】

    2024-06-13 21:06:03       7 阅读