数据结构(三) - 栈和队列


  • 栈和队列是限定插入和删除只能在表的“端点”进行的线性表

    栈和队列是线性表的子集(是插入和删除位置受限的线性表)

栈的定义和特点

  • 栈(stack) 是一个特殊的线性表,是限定仅在一段(通常是表尾)进行插入和删除操作的线性表

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

栈是仅在表尾进行插入、删除操作的线性表
表尾(即an端)称为栈顶 Top;表头(即a1端)称为栈底 Base

插入元素到栈顶(即表尾)的操作,称为入栈。
从栈顶删除最后一个元素的操作,称为出栈。

示意图:

总结:

栈与线性表的区别:

顺序栈的实现和表示

使用数组作为顺序栈存储方式的特点:简单、方便、但易产生溢出(数组大小固定)

  • 上溢(overflow): 栈已经满,又要压入元素
  • 下溢(underflow): 栈已经空,还要弹出元素

tips:
上溢是一种错误,使问题的处理无法进行;而下溢一般认为是一种结束条件,即问题处理结束。

链栈的顺序和表示

队列的定义和特点

队列(queue)是一种先进先出(First In First Out ----- FIFO)的线性表。在表一段插入(表尾),在另一端(表头)删除

总结:

栈和递归

以下三种情况常常用到递归方法:

  • 递归定义的数学函数

  • 具有递归特性的数据结构

  • 可递归求解的问题

递归问题 --- 用分治法求解

分治法: 对于一个较为复杂的问题,能够分解成几个相对简单的且解法相同或类似的子问题来求解

分治法求解递归问题算法的一般形式:

递归的优缺点:

posted @   chuangzhou  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示