#include <stdio.h>
#include <stdlib.h>
#define QueueSize 100;
typedef char DataType;
typedef struct
{
DataType data[QueueSize];
int front,rear;
}CirQueue;
CirQueue Q;
// 置空队里
void InitQueue(CirQueue * Q)
{
Q->front=Q->rear=0; //front和rear都为0的时候是空
}
// 判队空
int QueueEmpty(CirQueue * Q)
{
return Q->front==Q->rear; //当尾指针等于头指针的话就是空
}
// 判队满
int QueueFull(CirQueue * Q)
{
return (Q->rear+1)%QueueSize==Q->front; //当尾指针加1等于头指针的话就是满
}
// 入队列
void EnQueue(CirQueue * Q,DataType x)
{
if(QueueFull(Q))
{
printf("该队列已满\n");
exit(0);
}else
{
Q->data[Q->rear]=x; //下一个空位放上元素
Q->rear=(Q->rear+1)%QueueSize; //循环意义下的加1
}
}
// 出队列
DataType DeQueue(CirQueue * Q)
{
DataType x;
//删除Q队头元素,并返回其值
if(QueueEmpty(Q))
{
printf("该队列是空\n");
exit(0);
}else
{
x=Q->data[Q->front]; //保持待删除元素值
Q->front=(Q->front+1)%QueueSize;//头指针加1
return x; //返回删除的元素值
}
}
DataType GetFront(CirQueue * Q)
{
if(QueueEmpty(Q))
{
printf("该队列是空\n");
exit(0);
}else
{
return Q->data[Q->front];
}
}
C-循环队列
最新推荐文章于 2023-10-28 14:45:15 发布