数据结构复习

第3章 栈与队列

Posted by XDong on October 10, 2022

栈与队列

3.1 栈与队列的定义和特点

  • 栈,后进先出(LIFO)
  • 队列,先进先出(FIFO)

3.2 案例引入

  1. 数制的转换
  2. 括号匹配的检验
  3. 表达式求值
  4. 舞伴问题

3.3 栈的表示和操作的实现

3.3.1 栈的类型定义

3.3.2 顺序栈的表示和实现

3.3.3 链栈的表示和实现

3.4 栈与递归

3.5 队列的表示和操作的实现

3.6 案例分析与实现

  1. 数制的转换
  2. 括号匹配的检验
  3. 表达式求值
  4. 舞伴问题

3.7 小结

  1. 栈是限定仅在表尾进行插入或删除的线性表,又称为后进先出的线性表。
  2. 队列是一种先进先出的标星标。它只允许在表的一段进行插入,而在另一端删除元素。队列的主要操作是进队和出队,对于顺序的循环队列的进队和出队操作要注意判断队满或队空。凡是涉及队头或队尾指针的修改都要将其对MAXSIZE求模。
  3. 栈与队列是在程序涉及中被广泛使用的两种数据结构,其具体的应用场景都是与其表示方法和运算规则相互联系的。 栈与队列的比较
  4. 栈有一个重要应用是在程序设计语言中实现递归

易错点

  1. 循环队列中对长度进行计算,队尾的下标应该始终大于队首的下标
  2. 中缀表达式转后缀表达式
    1. 王道的方法,对符号的优先级进行划分,分为isp(栈内优先),和icp(栈外优先),“+-*/”等符号栈内优先级更高。优先级高的元素出栈,优先级低的元素进栈,当isp=icp时,直接退栈,相当于两个元素相消(推荐符号优先级
    2. 自己的方法,只对“+-*/”符号标记优先级,并且不区分isp和icp,当icp<=isp时,栈顶输出,否则入栈,对“#(”等符号进行特殊处理(不推荐