>[success] # 队列
[消息队列](https://www.zhihu.com/question/34243607)
~~~
1.队列的应用场景'循环队列、阻塞队列、并发队列'
2.队列就像我们排队买票,我们一般遵循来的人自动排到队尾,队伍开始的人买完票离开队伍,
因此我们可以得到一个结论'队列是一组有序的项,并遵循先进先出的原则(FIFO)',这种结构就叫'队列'
~~~
![](https://img.kancloud.cn/1b/9e/1b9e8ed62c22d9527adaefe02c954bbb_235x121.png)
>[info] ## 队列和栈的区别
~~~
1.队列遵循的是'先进先出原则,并且是从队尾进入,队头出去',
栈是遵循的是'先进后出原则,并且只能从栈顶插入,栈顶离开'
~~~
>[danger] ##### 什么时候使用队列
~~~
1.当某些数据需要按顺序执行,并且满足先进先出的特性,
我们就应该首选'队列'这种数据结构。
~~~
>[danger] ##### 如何实现队列
~~~
1.首先需要满足'先进先出原则',因此最基本的操作也是两个:'入队 enqueue()',放一个数据到队列尾部;
'出队 dequeue()',从队列头部取一个元素
2.可以采用数组和链表让其遵循'先进先出原则',封装成队列用数组实现的队列叫作'顺序队列',用链表实现的队列
叫作'链式队列'。
~~~
- 接触数据结构和算法
- 数据结构与算法 -- 大O复杂度表示法
- 数据结构与算法 -- 时间复杂度分析
- 最好、最坏、平均、均摊时间复杂度
- 基础数据结构和算法
- 线性表和非线性表
- 结构 -- 数组
- JS -- 数组
- 结构 -- 栈
- JS -- 栈
- JS -- 栈有效圆括号
- JS -- 汉诺塔
- 结构 -- 队列
- JS -- 队列
- JS -- 双端队列
- JS -- 循环队列
- 结构 -- 链表
- JS -- 链表
- JS -- 双向链表
- JS -- 循环链表
- JS -- 有序链表
- 结构 -- JS 字典
- 结构 -- 散列表
- 结构 -- js 散列表
- 结构 -- js分离链表
- 结构 -- js开放寻址法
- 结构 -- 递归
- 结构 -- js递归经典问题
- 结构 -- 树
- 结构 -- js 二搜索树
- 结构 -- 红黑树
- 结构 -- 堆
- 结构 -- js 堆
- 结构 -- js 堆排序
- 结构 -- 排序
- js -- 冒泡排序
- js -- 选择排序
- js -- 插入排序
- js -- 归并排序
- js -- 快速排序
- js -- 计数排序
- js -- 桶排序
- js -- 基数排序
- 结构 -- 算法
- 搜索算法
- 二分搜索
- 内插搜索
- 随机算法
- 简单
- 第一题 两数之和
- 第七题 反转整数
- 第九题 回文数
- 第十三题 罗马数字转整数
- 常见一些需求
- 把原始 list 转换成树形结构