typedef struct
{
DATA data[QUEUEMAX];
int head;//定义队头
int tail;//定义队尾
} SeqQueue;
//初始化
SeqQueue *SeqQueueInit()
{
SeqQueue *q;
if(q = (SeqQueue *)malloc(sizeof(SeqQueue)));
{
q->head = 0;//设置队头
q->tail = 0;//设置队尾
return 0;
}
else
{
return NULL;
}
}
//释放队列
void SeqQueueFree(SeqQueue *q)
{
if(q!=NULL)
{
free(q);
}
}
//检验队列是否为空
int SeqQueueIsEmpty(SeqQueue *q)
{
return (q->head ==q->tail);
}
//队列是否已满
int SeqQueueIsFull(SeqQueue *q)
{
return (q->tail==QUEUEMAX);
}
//获取队列长度
int SeqQueueLen(SeqQueue *q)
{
return (q->tail-q->head);
}
//顺序队列的入队操作
int SeqQueueIn(SeqQueue *q,DATA data)
{
if(q->tail==QUEUEMAX)
{
printf("队列已满");
return 0;
}
else
{
q->data[q->tail++]=data;
return 1;
}
}
//顺序队列的出队
DATA *SeqQueueOut(SeqQueue *q)
{
if(q->head ==q->tail)
{
printf("队列已空");
return NULL;
}
else
{
return &(q->data[q->head++]);//取出队头元素后,将队头指针加一
}
}
//取出队头元素
DATA *SeqQueuePeek(SeqQueue *q)
{
if(q->head ==q->tail)
{
printf("队列已空");
return NULL;
}
else
{
return &(q->data[q->head]);
}
}
顺序队列的基本操作
最新推荐文章于 2023-10-21 12:13:24 发布