美文网首页
堆、栈和队列

堆、栈和队列

作者: 大师艾小伦 | 来源:发表于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中
    堆是内存中实际存储数据的地方
    栈是内存中存储数据地址的地方
    不相干的东西,不要混淆,闹出笑话

    相关文章

      网友评论

          本文标题:堆、栈和队列

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