队列笔记
来源:互联网 发布:网络电子游戏官网 编辑:程序博客网 时间:2024/04/30 15:28
队列的用途:
先来先服务的原则:
订票系统,操作系统的作业调度,消息队列。
顺序队列
结构体中的数组用来存储入队的元素。
typedef struct
{
DATATYPE items[QUEUESIZE];
int front,rear;
}SqQueue;
顺序队列的溢出问题。
1:队列满时还要进行入队操作,rear会超出数组的下标。上溢。
2:队列空时还要出队操作,front会0-1=-1,非法下标,下溢。
3:满队之后出队,此时有空余位置,却不能通过入队来插入元素,这是假溢出。
综上的顺序队列的溢出问题,有循环队列来解决假溢出问题。
循环队列的指针运算:
front = (front + 1)%QUEUESIZE;
rear = (rear + 1)%UQEUESIZE;
在逻辑上把循环队列的首尾相连。通过队头队尾的指针运算实现。
区分循环队列队空还是队满的问题:
无论队空还是队满都存在front == rear,
方法一:
因为只有入队操作才会导致队满,只有出队操作才会导致队空。
所以设置一个标签,tag,用来标记前一个操作是入队还是出队。
入队为1,出队为0.
所以front == rear,tag == 1,队满。
front == rear,tag == 0,队空。
方法二:
设置一个计数器count,计数队列中的元素数。
count == 0,队空
count == QUEUESIZE,队满
方法三:(这种方法的效率较高)
少用一个存储空间
此时当rear指向这个不用的存储空间时,表示队满。
链队列
不存在空间浪费。也不存在上溢出的问题。
链队列的数据结构方法:
#define DATATYPE int
typedef struct PNode
{
DATATYPE data;
PNode *next;
}LQNode;
typedef struct
{
LQNode *front,*rear;
}LinkQueue;
LQNode用来实现链
LinkQueue用来指向队头队尾。
先来先服务的原则:
订票系统,操作系统的作业调度,消息队列。
顺序队列
结构体中的数组用来存储入队的元素。
typedef struct
{
DATATYPE items[QUEUESIZE];
int front,rear;
}SqQueue;
顺序队列的溢出问题。
1:队列满时还要进行入队操作,rear会超出数组的下标。上溢。
2:队列空时还要出队操作,front会0-1=-1,非法下标,下溢。
3:满队之后出队,此时有空余位置,却不能通过入队来插入元素,这是假溢出。
综上的顺序队列的溢出问题,有循环队列来解决假溢出问题。
循环队列的指针运算:
front = (front + 1)%QUEUESIZE;
rear = (rear + 1)%UQEUESIZE;
在逻辑上把循环队列的首尾相连。通过队头队尾的指针运算实现。
区分循环队列队空还是队满的问题:
无论队空还是队满都存在front == rear,
方法一:
因为只有入队操作才会导致队满,只有出队操作才会导致队空。
所以设置一个标签,tag,用来标记前一个操作是入队还是出队。
入队为1,出队为0.
所以front == rear,tag == 1,队满。
front == rear,tag == 0,队空。
方法二:
设置一个计数器count,计数队列中的元素数。
count == 0,队空
count == QUEUESIZE,队满
方法三:(这种方法的效率较高)
少用一个存储空间
此时当rear指向这个不用的存储空间时,表示队满。
链队列
不存在空间浪费。也不存在上溢出的问题。
链队列的数据结构方法:
#define DATATYPE int
typedef struct PNode
{
DATATYPE data;
PNode *next;
}LQNode;
typedef struct
{
LQNode *front,*rear;
}LinkQueue;
LQNode用来实现链
LinkQueue用来指向队头队尾。
0 0
- 队列笔记
- 队列笔记
- 栈、队列、优先队列笔记
- 数据结构笔记5 队列
- 等待队列学习笔记
- 等待队列学习笔记
- 等待队列学习笔记
- 等待队列学习笔记
- 队列学习笔记
- 内核等待队列(笔记)
- 数据结构学习笔记--队列
- 【笔记】环形队列链式
- 《数据结构》复习笔记--队列
- 队列学习笔记
- 栈和队列笔记
- 数据结构笔记-----队列
- 数据结构学习笔记--队列
- 学习笔记:单调队列
- HDU 2444
- Android四大组件之三:ContentProvider数据共享
- TCP/IP解析(一):TCP/IP的工作方式
- 二项式、杨辉三角、组合数三者之间关系
- Trie树 hdu3460 Ancient Printer
- 队列笔记
- 周赛一 ACdream 1196 模拟题
- 为别人撑伞(深度好文)
- HDU 3478
- 第一章 绪论
- JS将一个十进制转换成二进制
- 生成所有的出栈序列 (回溯法)
- myql5.7.7优化配置参数
- Leetcode Exercise