队列是一种可以实现一个先进先出的存储结构

什么是队列?

队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。

栈,只能在栈顶进行操作,队列是一端进入,一端输出

队列也是头部和尾部

rear翻译的意思是:

后方的
font是前段的
 
队列分为两种:一种是使用数组来实现,一种是使用链表来实现

 

队列添加数据只能在rear尾部添加,在font端进行删除

静态队列都是循环队列

1、静态队列为啥必须是循环队列

我们来分析下:

采用普通数组来实现队列会出现的问题:

pFont指向队列的第一个元素

pRear执行对应的最后的一个元素的下一个节点,该节点不存储有效的数据,就像链表的phead一样。例如上面存储 1 2 3 4 5 ,prear就在存储5节点的下一个节点,有效的数据是存储在 1 2 3 4 5 这五个节点中的。这样设计是便于队列的操作

删除元素的时候pFont向上移动,删除元素是在头部删除

添加元素的时候pRea向上移动

如果使用普通的数组来实现队列,当删除元素pFont向上移动的时候,例如删除-1,这个时候pFont向上移动到-2存储的位置,这个时候采用普通数组的方式存储-1的这个内存空间就被释放了,不能再被使用了,这种叫做队列的假溢出

添加元素和删除元素Frear和pFont都只能向上移动

当pFont向上移动和pRear重合的时候,说明队列为null

上面这种情况,rear已经到了数组的最尾的节点,rear不能再向上移动了,记住rear节点不存在有效的数据值,相当于链表中的pHead节点,现在队列中只存储了c这个值,现在我们要存储中这个值,假设rear是循环链表,此时将rear移动到链表的第一个元素节点的位置

在h的位置就能够存储中字了

现在队列中就有两个值,一个c,一个是中

当我们要删除一个元素的时候,pFont向上移动变成

此时队列中只有一个中字

当此时在添加一个国字,pRear向上移动

此时,我们删除中字,这个时候pFont已经达到了最后,不能再向上移动了,要不然就溢出了,让pFont指向第一个元素

所以数组现实队列必须是循环队列。

35 _ 队列1 _ 什么是队列.swf的更多相关文章

  1. 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler

    第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...

  2. BZOJ_1692_[Usaco2007 Dec]队列变换_后缀数组

    BZOJ_1692_[Usaco2007 Dec]队列变换_后缀数组 Description FJ打算带他的N(1 <= N <= 30,000)头奶牛去参加一年一度的“全美农场主大奖赛” ...

  3. 39 _ 队列5 _ 循环队列需要几个参数来确定 及其含义的讲解.swf

    上面讲解都是循环队列,如果是链表实现的话就很简单,队列只有循环队列才比较复杂 此时队列中只存储一个有效元素3,当在删除一个元素的时候,队列为空,pFont向上移动,pFont等于pRear,但是此时p ...

  4. day16_函数作用域_匿名函数_函数式编程_map_reduce_filter_(部分)内置函数

    20180729    补充部分代码 20180727    上传代码 #!/usr/bin/env python # -*- coding:utf-8 -*- # ***************** ...

  5. C# Azure 消息队列ServiceBus (服务总线队列)

    1. 前言 在阅读本文之前,可以查看微软官方的说明. https://www.azure.cn/documentation/articles/service-bus-create-queues/ 2. ...

  6. Spring_MVC_教程_快速入门_深入分析

    Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...

  7. 基于samba实现win7与linux之间共享文件_阳仔_新浪博客

    基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.

  8. IOS多线程知识总结/队列概念/GCD/主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别(附代码)

    进程:正在进行中的程序被称为进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间 线程:线程是进程中一个独立的执行路径(控制单元);一个进程中至少包含一条线程,即主线程 队列 dispa ...

  9. 浅谈 Underscore.js 中 _.throttle 和 _.debounce 的差异

    Underscore.js是一个很精干的库,压缩后只有5.2KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程. 本文仅探讨Underscore.js的两个 ...

随机推荐

  1. 50个SQL语句(MySQL版) 问题十四

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

  2. AUTOSAR-PDU&SDU

    https://mp.weixin.qq.com/s/TZcJcHVnNARMcUac2Es0wQ   PDU: Protocol Data Unit The PDU contains SDU and ...

  3. Spring (一 ) 概述与介绍

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 目录 1.Spring概述 2.Spring的模块介绍 Spring框架分为四大模块: 3.Eclips ...

  4. 利用jieba库画词云

    from wordcloud import WordCloud import matplotlib.pyplot as plt import jieba # 生成词云 def create_word_ ...

  5. Java实现 LeetCode 791 自定义字符串排序(桶排序)

    791. 自定义字符串排序 字符串S和 T 只包含小写字符.在S中,所有字符只会出现一次. S 已经根据某种规则进行了排序.我们要根据S中的字符顺序对T进行排序.更具体地说,如果S中x在y之前出现,那 ...

  6. Java实现 LeetCode 552 学生出勤记录 II(数学转换?还是动态规划?)

    552. 学生出勤记录 II 给定一个正整数 n,返回长度为 n 的所有可被视为可奖励的出勤记录的数量. 答案可能非常大,你只需返回结果mod 109 + 7的值. 学生出勤记录是只包含以下三个字符的 ...

  7. Java实现派(Pie, NWERC 2006, LA 3635)

    题目 有F+1个人来分N个圆形派,每个人得到的必须是一整块派,而不是几块拼在一起,且面积要相同.求每个人最多能得到多大面积的派(不必是圆形). 输入的第一行为数据组数T.每组数据的第一行为两个整数N和 ...

  8. Java实现 LeetCode 118 杨辉三角

    118. 杨辉三角 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出: [ [1], [1,1], ...

  9. Java实现 LeetCode 94 二叉树的中序遍历

    94. 二叉树的中序遍历 给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3] 1 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? / ...

  10. java实现迷宫问题

    迷宫问题 对于走迷宫,人们提出过很多计算机上的解法.深度优先搜索.广度优先搜索是使用最广的方法.生活中,人们更 愿意使用"紧贴墙壁,靠右行走"的简单规则. 58 下面的代码则采用了 ...