forked from xuos/xiuos
60 lines
794 B
C
60 lines
794 B
C
#include <queue.h>
|
|
Status InitQueue(SqQueue *Q)
|
|
{
|
|
Q->front=0;
|
|
Q->rear=0;
|
|
return OK;
|
|
}
|
|
|
|
|
|
Status ClearQueue(SqQueue *Q)
|
|
{
|
|
Q->front=Q->rear=0;
|
|
return OK;
|
|
}
|
|
|
|
|
|
Status QueueEmpty(SqQueue *Q)
|
|
{
|
|
if(Q->front==Q->rear)
|
|
return TRUE;
|
|
else
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
int QueueLength(SqQueue *Q)
|
|
{
|
|
return (Q->rear-Q->front+MAXSIZE)%MAXSIZE;
|
|
}
|
|
|
|
|
|
Status GetHead(SqQueue *Q,QElemType *e)
|
|
{
|
|
if(Q->front==Q->rear)
|
|
return ERROR;
|
|
*e=Q->data[Q->front];
|
|
return OK;
|
|
}
|
|
|
|
|
|
Status EnQueue(SqQueue *Q,QElemType e)
|
|
{
|
|
if ((Q->rear+1)%MAXSIZE == Q->front)
|
|
return ERROR;
|
|
Q->data[Q->rear]=e;
|
|
Q->rear=(Q->rear+1)%MAXSIZE;
|
|
return OK;
|
|
}
|
|
|
|
|
|
Status DeQueue(SqQueue *Q,QElemType *e)
|
|
{
|
|
if (Q->front == Q->rear)
|
|
return ERROR;
|
|
*e=Q->data[Q->front];
|
|
Q->front=(Q->front+1)%MAXSIZE;
|
|
return OK;
|
|
}
|
|
|