队列是只允许再一端进行插入,而在另一端进行删除的线性表
队头(front):允许删除的一端,又称为队首
队尾(rear):允许插入的一段
先进入队列的元素必然先离开队列(先进先出)与栈相反
队尾指针指向队尾元素的下一个位置(防止假溢出)
队空条件:front == rear
队满条件:(rear+1) % MaxSize == front
进队:rear = (rear + 1) % MaxSize
出队:front = (front + 1) % MaxSize
队列元素个数:(rear - front + MaxSize) % MaxSize
#include<iostream>
const int MaxSize = 50;
typedef int Elemtype;
typedef struct {
Elemtype data[MaxSize]; //存放队列元素
//出队:front=(front+1) % MaxSize
int front; //队头指针
//入队:rear=(rear+1) % MaxSize
int rear; //队尾指针
}SqQueue;
//入队
bool EnQueue(SqQueue &Q, Elemtype e) {
if ((Q.rear + 1) % MaxSize == Q.front) //队列已满
return false;
Q.data[Q.rear] = e;
Q.rear = (Q.rear + 1) % MaxSize;
return true;
}
//出队
bool DeQueue(SqQueue &Q, Elemtype &e) {
if (Q.rear==Q.front) //队列为空
return false;
e = Q.data[Q.front];
Q.front = (Q.front + 1) % MaxSize;
return true;
}
本文深入探讨了队列这一线性表数据结构,详细讲解了队列的基本概念,包括队头(front)和队尾(rear)的概念,以及先进先出(FIFO)原则。文章还介绍了队列的操作,如进队和出队,并提供了循环队列的实现代码,解释了队满和队空的判断条件。
6775

被折叠的 条评论
为什么被折叠?



