美文网首页
栈和队列

栈和队列

作者: 我想吃碗牛肉面 | 来源:发表于2018-08-07 15:15 被阅读7次

之前已经说过,数据结构是数据的一种组织形式,根据不同的需求就会出现不同的数据结构,栈和队列就是两种特殊的线性表数据结构,Android四大组件之一Activity的就是以栈的结构组织的。


其可定位为只允许在表的末端进行插入和删除的线性表,遵循后进先出的规则。在这个规则之下,基于数组的存储表示实现的栈成为顺序栈,基于链表的存储表示实现的栈成为链式栈。

顺序栈的实现在于使用了数组这个基本数据结构,数组中的元素在内存中的存储位置是连续的,且编译器要求我们在编译期就要确定数组的大小,这样对内存的使用效率并不高,一来无法避免因数组空间用光而引起的溢出问题,二在系统将内存分配给数组后,则这些内存对于其他任务就不可用;而对于链式栈而言,使用了链表来实现栈,链表中的元素存储在不连续的地址,由于是动态申请内存,所以我们可以以非常小的内存空间开始,另外当某个项不使用时也可将内存返还给系统。

队列
队列是另一种限定存取位置的线性表,它只允许在表的一端插入,在另一端删除。队列也有基于数组的存储表示和基于链表的存储表示。

循环队列
一开始设计队列是形状像一栋楼那样,从上面进来到一、二、三层,等一层走了之后,二、三层不会自动下来,有新的会在第四层增加,当指针到达MaxSize的时候,即顶楼貌似这个队列就已经满了,而实际上前面还有些楼层是空的,所以才出现了循环队列。它是一个顺序队列的变形。

链式队列
队列的对头指针front指向单链表的第一个结点,对尾rear指针指向单链表的最后一个结点。它遵循队列的先进先出规则,只是结构是单链表结构。其特别适合于数据元素变动比较大的情形,而且不存在队列慢而残神工艺处的情况。

优先级队列
前面介绍的队列的规则都是FIFO,但是,许多应用需要另一种队列,每次从队列中取出的应是具有最高优先权的元素。
不明白:既然是遵守FIFO规则的才叫队列,现在又来个优先级,那么不是破坏了原有的规则了吗?
解释:在将元素插入队列的时候,会按照优先级将元素排列好,然后第一个元素是优先级最高的,最后一个是优先级最底的,结果就同时遵守了FIFO和优先级最高先出的规则。

双端队列
与前面介绍的队列不同,这个队列是允许在两端进行插入和删除的,相对队列两头来说,还是遵守了FIFO的规则。

递归
若一个对象部分地包含它自己,或用它自己给自定定义,则成这个对象是递归的;而且若一个过程直接地或间接地调用自己,则称这个过程是递归的过程。

相关文章

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • 栈和队列

    用栈定义队列(出入栈) 用队列定义栈(数据队列和辅助队列)

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 栈和队列

    栈和队列 本质上是稍加限制的线性表 栈和队列定义 栈顺序栈定义 链栈结点定义 队列顺序队列 链队列链队类型定义 链...

  • Python实现栈和队列以及使用list模拟栈和队列

    Python实现栈和队列 Python使用list模拟栈和队列

  • 算法-栈和队列算法总结

    栈和队列算法总结 1 模拟 1.1 使用栈实现队列 1.2 使用队列实现栈 2 栈的应用 2.1 栈操作 2.2 ...

  • 算法分析 [BFS、Greedy贪心] 2019-02-18

    队列 和 栈 232. 用栈实现队列 Implement Queue using Stacks双栈,出队列时,将i...

  • 实 验 四 栈和队列

    一、实验目的与要求:## 1、理解栈和队列抽象数据类型。 2、掌握栈和队列的存储结构和操作实现。 3、理解栈和队列...

  • 栈、队列和链表

    基本数据结构 栈和队列 栈和队列都是动态集合。栈实现的是一种后进先出策略。队列是一种先进先出策略。 栈 栈上的in...

  • 算法导论 基本数据结构

    MIT公开课没有讲到的内容,介绍几种基本数据结构- 栈和队列- 链表- 二叉树 栈和队列 栈和队列都是动态集合,元...

网友评论

      本文标题:栈和队列

      本文链接:https://www.haomeiwen.com/subject/ubcavftx.html