队列是一种特殊的线性表,它包含一个队头和一个队尾。其中,队头只允许删除元素,队尾只允许插入元素。队列的特点是先进先出(FIFO)。
顺序队列定义如下:
#define QueueSize 40
typedef struct Squeue
{
DataType queue[QueueSize];
int front,rear;
}SeqQueue;
算法的实现:
(1)队列的初始化操作。
void InitQueue(SeqQueue *SQ)
{
SQ->front=SQ->rear=0;
}
(2)判断队列是否为空。
int QueueEmpty(SeqQueue SQ)
{
if (SQ.front==SQ.rear)
{
return 1;
}
else
{
return 0;
}
}
(3)入队操作。
int EnterQueue(SeqQueue *SQ,DataType x)
{
if (SQ->rear==QueueSize)
{
return 0;
}
SQ->queue[SQ->rear++]=x;
return 1;
}
(4)出队操作。
int DeleteQueue(SeqQueue *SQ,DataType *x)
{
if (SQ->rear==SQ->front)
{
return 0;
}
*x=SQ->queue[SQ->front++];
return 1;
}