13-数据结构_队列
来源:互联网 发布:kindle for mac 下载 编辑:程序博客网 时间:2024/05/23 18:30
线性结构的两种常见应用之一 队列
两端操作, 一端只能入, 另一端只能出
补充:
front : 队首
rear : 队尾
入队 : 队尾操作
出队 : 队首操作
2) 循环队列需要几个参数来确定
3) 循环队列各个参数的含义
4) 循环队列入队伪算法
5) 循环队列出队伪算法
6) 如何判断循环队列是否为空
7) 如何判断循环队列是否已满
1) 队列初始化
front 和 rear 的值都是 零
2) 队列非空
front : 队列的第一个元素
rear : 队列的最后一个有效元素的下一个元素
3) 队列空
front 和 rear 相等, 但不一定是零
2) rear移向下一个元素, rear = (rear + 1) % arrLen
1) 多增加一个标志位参数, 1-满, 0-未满
2) 少使用一个元素,
则, 满: (rear + 1) % arrLen == front
说明:
如果全部元素都使用, 则满和空时, front和rear都相等
少使用一个元素, 当队列很大时, 可以忽略不计
如
操作系统中 阻塞队列, 执行队列, ...
一, 定义
一种可以实现"先进先出"的存储结构.两端操作, 一端只能入, 另一端只能出
补充:
front : 队首
rear : 队尾
入队 : 队尾操作
出队 : 队首操作
二, 分类
1, 链式队列[链表]
如图
2, 静态队列[数组]
静态队列通常都必须是循环队列
三, 循环队列
1, 问题
1) 静态队列为什么必须是循环队列2) 循环队列需要几个参数来确定
3) 循环队列各个参数的含义
4) 循环队列入队伪算法
5) 循环队列出队伪算法
6) 如何判断循环队列是否为空
7) 如何判断循环队列是否已满
2, 解
(1) 静态队列为什么必须是循环队列
如图, 出队/入队如果不是循环队列, 出队/入队都上移, 则下面的空间浪费了.
(2) 循环队列需要几个参数来确定
两个: front, rear(3) 循环队列各个参数的含义
这两个参数不同场合有不同的含义1) 队列初始化
front 和 rear 的值都是 零
2) 队列非空
front : 队列的第一个元素
rear : 队列的最后一个有效元素的下一个元素
3) 队列空
front 和 rear 相等, 但不一定是零
(4) 循环队列入队伪算法
1) 将值存入rear指向的元素2) rear移向下一个元素, rear = (rear + 1) % arrLen
(5) 循环队列出队伪算法
front = (front + 1) % arrLen(6) 如何判断循环队列是否为空
空: front == rear
(7) 如何判断循环队列是否已满
两种方式:1) 多增加一个标志位参数, 1-满, 0-未满
2) 少使用一个元素,
则, 满: (rear + 1) % arrLen == front
说明:
如果全部元素都使用, 则满和空时, front和rear都相等
少使用一个元素, 当队列很大时, 可以忽略不计
四, 算法
1, 入队2, 出队
五, 应用
所有与时间有关操作 都有 队列的影子如
操作系统中 阻塞队列, 执行队列, ...
- 13-数据结构_队列
- 数据结构_循环队列
- 数据结构_队列
- 数据结构_循环队列
- 数据结构_优先队列
- 数据结构_优先队列
- 数据结构_队列(queue)
- 数据结构_队列
- 数据结构_链队列
- Python 数据结构_队列
- 数据结构_优先队列
- 【数据结构_队列_Queue_0965】循环队列
- 数据结构_线性表_顺序队列_循环队列_链队列
- 数据结构的C实现_链式队列
- 数据结构的C实现_循环队列
- 数据结构学习之_循环队列
- 14-数据结构_队列-算法实现
- 数据结构_栈、队列和树(Java)
- 什么是数据结构
- 数据驱动销售——个性化推荐引擎
- 数字图像处理:5.放大、缩小图像
- SDJZU-迷宫问题
- c# FTP操作类}C#中检测ftp服务器上文件是否存在
- 13-数据结构_队列
- LeetCode-Remove Element
- Maven系列一:基础知识
- 【数据库系列】之《视图与基本表的区别》
- 面向对象和面向过程的区别--- 如何利用面向对象特性美化代码, 分层 ;
- iptables学习 03 端口转发
- JS总结--(XML和Xpath) .
- Linux USB无线网卡驱动相关资料收集
- getopt模块之getopt与gnu_getopt的不同