美文网首页
堆、栈和队列

堆、栈和队列

作者: 大师艾小伦 | 来源:发表于2019-03-10 11:39 被阅读0次

栈(stack)
又叫堆栈
是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端进行加入数据(push)和输出数据(pop)的运算。保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。
操作

  • 加入数据(push)
  • 输出数据(pop)

队列(QUEUE)
队列跟堆栈的概念其实还是挺相似的,队列他就是只允许你从一段添加从另一端取出。同栈一样,可以由线性表来实现。
一个队列应该包含的操作有:

  • Queue() 创建一个空的队列
  • enqueue(item) 往队列中添加一个item元素
  • dequeue() 从队列头部删除一个元素
  • isEmpty() 判断一个队列是否为空
  • size() 返回队列的大小

双端队列
双端队列是一种具有队列和栈的性质的数据结构。
双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。
其实它可以看成是两个栈的栈底挨在一起。

双端队列的操作:

  • Deque() 创建一个空的双端队列
  • addFront(item) 从队头加入一个item元素
  • addRear(item) 从队尾加入一个item元素
  • removeFront() 从队头删除一个item元素
  • removeRear() 从队尾删除一个item元素
  • isEmpty() 判断双端队列是否为空
  • size() 返回队列的大小

由此可看 他们之间的区别是:

  • 堆栈式FILO的(先进后出);
  • 队列是FIFO的(先进先出);

在java中
堆是内存中实际存储数据的地方
栈是内存中存储数据地址的地方
不相干的东西,不要混淆,闹出笑话

相关文章

  • 堆和栈,队列和栈

    堆和栈的区别 1、堆栈空间分配 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作...

  • 堆、栈和队列

    栈(stack)又叫堆栈是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端进行加入数...

  • 【Javascript】探究javascript中的堆/栈/任务

    堆/栈/队列 在javascript中,存在调用栈 (call stack)和内存堆(memory heap) ,...

  • 堆和栈(Heap and Stack)的区别!

    堆和栈最明显的区别是: 堆(Heap):队列优先,先进先出(FIFO—first in first out); 栈...

  • iOS堆、栈和队列

    堆 堆是一种经过排序的树形数据结构,每个节点都有一个值,通常我们所说的堆的数据结构是指二叉树。所以堆在数据结构中通...

  • 浅谈堆、栈和队列

    从管理方式分析: 对于栈来讲,是由编译器自动管理,无需我们手工控制; 对于堆来说,释放工作由程序员控制,容易产生内...

  • 堆\栈\队列

    堆和栈区别总结: 一 堆栈空间分配: 栈(操作系统): 由操作系统自动分配释放,存放函数的参数值,局部变量的值等....

  • 堆、栈、队列

    堆:什么是堆?又该怎么理解呢?①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:·堆中某个节点的值总是...

  • 【 数据结构 & 算法 】—— 栈、队列、堆

    < 思维导图 > 预备知识:STL stack(堆) 预备知识:STL queue(队列) 使用队列实现栈(栈、队...

  • 简单数据结构(队列 栈 树 堆 )

    基础知识 基本概念 常见数据结构 栈和队列 栈Stack 队列Queue 树和堆 树的定义 树(tree)是包含n...

网友评论

      本文标题:堆、栈和队列

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