zoukankan      html  css  js  c++  java
  • 数据结构--队列

    队列仅仅同意一端进行插入操作,还有一端进行删除操作。队列是一种先进先出的线性表。简称FIFO。同意插入的一段为队尾,同意删除的一端为队头。



    顺序队列

    与栈不同的是,队列的出队元素在队头,那么队列没出去一个元素,后面的元素就要依次像前移动。这样他的时间复杂度就是O(n)。



    考虑上面截图的流程感觉效率非常低,起始我们的队列能够以还有一种方式来处理,就是元素不懂,而队头的指针移动。这样它的时间复杂度就为O(1)。



    上面攻克了效率低的问题,可是会存在控件浪费的现象。之前已经出队的元素。控件还在那,以下我们引入循环队列的概念,解决问题。

    我们把队列头尾相接的这种存储结构称之为循环队列。



    rear:队尾所指向的队列位置。

    font:队头所指向的队列位置。

    QueueSize:队列最大长度。

    推断队列是否满:(rear + 1) % QueueSize == font。


    计算队列长度:(rear - font  + QueueSize ) % QueueSize


    链队列

    队列的链式存储结构与单链表的链式存储结构一致,仅仅只是是元素尾进头出,我们称之为链队列。





    入队操作,将an的后继节点改为e的地址,然后尾节点指向e。



    出队操作,



    两个队列的选择。看详细的需求。与之前总结栈的差别一致,假设元素的大小确定则使用顺序队列最好,假设元素的大小不确定则使用连队列最好。


  • 相关阅读:
    信息反馈--冲刺12
    大道至简阅读笔记02
    信息反馈—冲刺11
    第十二周总结
    大道至简阅读笔记01
    小白学习站点
    校园服务第一阶段意见评论
    第十一周总结
    信息反馈--冲刺10
    信息反馈--冲刺09
  • 原文地址:https://www.cnblogs.com/llguanli/p/6803579.html
Copyright © 2011-2022 走看看