数据结构笔记7-队列

队列:队列是一种先进先出(FIFO)的线性表,允许插入的一端为队尾,允许删除的一端为队头。

循环队列----解决"假溢出"

除了特别说明外,循环队列通常是指顺序存储结构,而不是链式存储结构。

若队列的最大尺寸为QueueSize,队列空:front=rear

                                                    队列满:(rear+1)%QueueSize==front

通用的计算队列长度的公式为:

                        (rear-front+QueueSize)%QueueSize

循环队列顺序存储

        入队列:在队尾追加一个元素,无需移动,时间复杂度O(1).

        出队列:在队头,保证下标为0的位置不为空,时间复杂度O(n)。

        引入两个指针,front指队头,rear指队尾元素的下一个位置。

        front=rear时,此队列为空列。

循环队列链式存储

        队头指针指向链队列的头结点,队尾指针指向终端结点。

        空队列时,front和rear都指向头结点。

链队列的性质(尾指针的单循环链表)

        ”头出尾插“的单链表,即仅在表头进行删除操作和表尾进行插入操作的单链表。

        1)插入时:尾插法,且遵循尾改,头不改。

        2)删除时:头出法,且遵循头改,尾不改,但当删除最后一个元素时,首尾都要改。

对于循环队列的入队和出队求元素个数的运算都要用取模运算。
        入队:新元素位置rear=(rear+1)%m
        出队:front=(front+1)%m
        队空:front=rear
        队满:(rear+1)%m=front,m是队列长度
注意:有关循环队列,关于对头队尾指针的指向,多数教材约定,队头指针指向队头元素的前一位置,队尾指针指向队尾元素,也有教材规定队头指针元素,队尾指针指向队尾元素的后一位置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值