队列

作者: sakura579 | 来源:发表于2020-08-23 09:56 被阅读0次


queue
n. 队列;长队;辫子
vi. 排队;排队等候
vt. 将…梳成辫子;使…排队

rear
n. 后面;后方部队;屁股
adj. 后方的,后面的;背面的
v. 抚养;培养;喂养,饲养;栽种,培植;(马等动物)用后腿直立;竖起
adv. 向后;在后面

front
n. 前面;正面;前线
vt. 面对;朝向;对付
vi. 朝向
adj. 前面的;正面的
adv. 在前面;向前





两个指针变量 严格来说 是两个整型变量 用来指示 队头 队尾的位置
有指示位置的作用 类似于指针型作用 因此称他们为 指针 知道就好

对于入队操作 规定: 先移动队尾指针 ,然后入队元素

对于出队操作 规定:先移动队头指针,然后出队元素

对于队空状态 规定:front = rear 时 代表队空

队空状态是一个规定 不是队列与生俱来的东西
可以根据题目要求 推导出不同的队空状态 要注意!

入队


出队


队头指针 front 并不指向当前的队头元素 它的下一个位置才是当前的队头元素所在的位置

而 rear 始终指向队尾元素


继续入队 会发生数组越界 但 不是队满 还有很多空位置 没有存储元素

这种状态 叫 假溢出

用来 取余的操作 实现了两个指针 沿着环走的效果


(8+1)%9 = 0
实现了 从 8 -> 0 的过程 满足了要求 沿着环走

这就是 我们顺序队 正确的 入队 出队操作

上面那个是不对的 它会造成假溢出

因此我们顺序队 通常被称作 循环队列(因为它绕着环走)

两种状态
队空


队满


rear如果继续后移一个位置 就会和 front 重合
此时这个位置称作队满
就是我们空出一个位置来
(如果重合称为队满 看着很舒服 但是无法区别队空、队满)


在内存足够的情况下 连队满都没有 更不会有假溢出

队头指针 和 队尾指针


队空 没有数据结点 (有头结点)
front ->next = NULL;

队空 没有数据结点(没有头结点)
front = NULL;

相关文章

  • 队列

    队列特性 对比队列和栈 基于数组的队列 对比队列学习循环队列 循环队列难点 阻塞队列 并发队列 应用:线程池中拒绝...

  • 队列

    文章结构 什么是队列 实现队列顺序队列链式队列循环队列 Java中的队列 1. 什么是队列 队列也是一种操作受限的...

  • iOS底层-- GCD源码分析(1)-- dispatch_qu

    手动目录认识队列队列的结构队列的产生主队列全局队列创建的队列管理队列 代码版本dispatch version :...

  • 队列,异步,同步,线程通俗理解

    一、队列 串行队列 并行队列 主队列(只在主线程执行的串行队列) 全局队列(系统的并行队列) 二、 任务(是否具有...

  • GCD基础总结一

    上代码~ 同步串行队列 同步并行队列 异步串行队列 异步并行队列 主队列同步 会卡住 主队列异步

  • OC多线程

    队列创建 线程与队列 队列线程间通信 队列组

  • GCD

    获得主队列 获得全局队列 串行队列 异步队列 同步队列 阻隔队列 (像栅栏一样 ) 例如 A -->栅栏 --...

  • 数据结构第三篇 队列

    队列的特性 前进先出。 我们来大致描述下进出队列的情况。 进队列 1 进队列现在队列是 12 进队列现在队列是 1...

  • 利用链表实现队列

    队列成员变量: 队列长度 队列头节点 队列尾节点队列方法: 队列包含元素个数 队列是否为空 进队操作 出队操作 d...

  • Git 常用操作命令(持续更新)

    当前更新到stash队列 查看stash队列 清空队列 删除某个队列

网友评论

      本文标题:队列

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