zoukankan      html  css  js  c++  java
  • 基于数组的循环队列

    定义

    头尾相接的顺序存储结构

    重难点

    1 队列单指针(front指针)存储的不足:

    入队是在队尾追加一个元素,复杂度O(1),出队则需要移动剩余的所有元素,复杂度O(n)
    

    2 改为循环队列的两个关键指针:

    front - 指向队头元素
    rear - 指向队尾元素的下一个位置
    

    3 队列空的条件:

    front == rear
    

    4 队列满的条件:

    (rear + 1) % MAXSIZE = front
    【实际上数组中仍有一个空的元素, 如果不保留,
    则队列满的条件是front == rear, 与队列空重复,
    此时也可以采用标志位来区别空与满,此类方法暂不讨论】
    

    5 队列长度:
    rear > front: rear-front
    rear < front: (MAXSIZE - front) + (rear) = rear - front + MAXSIZE
    综合以上两种情况: LENGTH = (rear - front + MAXSIZE) % MAXSIZE

    6 指针移位操作
    Q->rear = (Q->rear+1)%MAXSIZE; // rear指针向后移一位置,若到最后则转到数组头部
    Q->front = (Q->front+1)%MAXSIZE; // front指针向后移一位置,* 若到最后则转到数组头部

  • 相关阅读:
    C
    C
    你好,欢迎到这里来
    数组专题
    web前端的性能优化
    MornUI 源码阅读笔记
    application tips
    [转]就这样,创建了自己的运行时共享库(RSL)
    [转]glew, glee与 gl glu glut glx glext的区别和关系
    编码相关了解
  • 原文地址:https://www.cnblogs.com/neen/p/13796230.html
Copyright © 2011-2022 走看看