队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表
队列是一种先进后出(First In First Out)。
1 队列的顺序存储结构
队列的头尾相接的顺序存储结构成为循环队列,如下图所示
判断队列满不满:当队列为空时,front = rear 当队列满时,我们修改其条件,保留一个元素空间。也就是说,队列满时,数组中还有一个空闲单位。如下图所示
则队列满的条件(rear + 1)% MAXSIZE == front
队列长度计算公式: (rear - front + MAXSIZE)%MAXSIZE
队列的顺序存储结构的结构体和函数声明如下:
#define MAXSIZE 10
typedef int Datatype;
typedef struct
{
Datatype data[MAXSIZE];
int front;
int rear;
}Queue;
bool InitQueue(Queue *S);
int QueueLength(Queue S);
bool FullQueue(Queue S);
bool EmptyQueue(Queue S);
bool EnQueue(Queue *S, Datatype e);
bool DeQueue(Queue *S, Datatype &e);
函数代码不再实现
参考: 大话数据结构