持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
队列的定义
队列(Queue),简称为队, 是先进先出(FIFO)的线性表。队列只允许在后端(称为rear)进行操作,在前端(称为front)进行删除操作。
- 是一种只允许在一端进行插入,在另一端进行删除的线性表,它是一种先进先出(FIFO)的数据结构
- 队尾:允许进行插入的一端(用变量rear指出)
- 队首:允许删除的一端称为队首(用变量front指出)
- 在队列不为空时,(一般的)我们只能看到队首元素
- 没有元素的队列称为空队
队列和堆栈一样,也是一个动态结构。
队列的结构定义
#define Max 50; // 队列当中元素的最大个数
// 队列的定义
struct Queue {
EleType data[Max]; // 队列的数据域
int front, rear; // 队列的队首元素位置与队尾元素位置
}
由于普通的队列在入队出队的过程中,指针指的位置可能超过数据范围上限,所以一般在实现时使用循环队列。
循环队列:当指针指向上限时将指针移动到最开始,与栈类似,也可以用链表的结构实现链式队列
顺序队列:采用顺序存储结构的队列简称顺序队列。顺序队列也存在溢出问题,即当队列已满时做进队操作,这种现象称为上溢,而当队列为空时做删除操作,这种现象称为下溢,这些都是在进行不同操作时需要考虑的问题。
队列操作
- 入队
- 出队
- 获取队首元素
入队操作:
出队操作:
- 队首指的是队首元素的位置
- 队尾指的是队尾元素的下一个位置,为了避免二义性,不然不能判断一个循环队列道德是满的还是空的