队列定义(queue):只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队列的顺序存储结构
#define DT char
#define M 100
typedef struct {
DT data[M];
int front,rear;
}SEQUEUE;
循环队列
定义一个循环队列:
#define MAXSIZE 100
typedef struct
{
ElemType *base;
int front;
int rear;
}
入队列操作
InsertQueue(cycleQueue *q,ElemType e)
{
if((q->rear+1)%MAXSIZE == q->front)
{
return; //队列已满
}
q->base[q->rear] = e;
q->rear = (q->rear+1) % MAXSIZE;
}
出队列操作
DeleteQueue(cycleQueue *q,ElemType e)
{
if(q->rear == q->front)
{
return; //队列为空
}
*e = q->base[q->front];
q->front = (q->front+1) % MAXSIZE;
}