队列(Queue):具有一定操作约束的线性表
插入和删除操作:只能在一端插入,而在另一端删除
先进先出
1、队列的顺序存储实现
队列的顺序存储结构通常由一个一维数组和一个记录队列头元素位置的变量front以及
一个记录队列尾元素位置的变量rear组成
(1)初始化
#define MaxSize <储存数据元素的最大个数>
typedef struct {
ElementType Data[ MaxSize ];
int rear;
int front;
} Queue;
(2)入队列
void AddQ( Queue *PtrQ, ElementType item)
{
if ( (PtrQ->rear+1) % MaxSize == PtrQ->front )
{
printf(“队列满”);
return;
}
PtrQ->rear = (PtrQ->rear+1)% MaxSize;
PtrQ->Data[PtrQ->rear] = item;
}
Front和rear指针的移动采用”加一取余“法,体现了顺序存储的”循环使用“。
(3)出队列
ElementType DeleteQ ( Queue *PtrQ )
{
if ( PtrQ->front == PtrQ->rear )
{
printf(“队列空”);
return ERROR;
} else
{
PtrQ->front = (PtrQ->front+1)% MaxSize;
return PtrQ->Data[PtrQ->front];
}
}