用C语言写一个循环队列
时间: 2023-06-06 12:07:35 浏览: 102
好的,关于C语言写循环队列,可以给你提供以下代码作为参考:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 4
typedef struct
{
int data[MAXSIZE];
int rear, front;
} Queue;
void InitQueue(Queue *Q)
{
Q->rear = 0;
Q->front = 0;
}
int IsFull(Queue *Q)
{
if ((Q->rear + 1) % MAXSIZE == Q->front)
return 1;
else
return 0;
}
int IsEmpty(Queue *Q)
{
if (Q->rear == Q->front)
return 1;
else
return 0;
}
int EnQueue(Queue *Q, int x)
{
if (IsFull(Q))
return 0;
else
{
Q->data[Q->rear] = x;
Q->rear = (Q->rear + 1) % MAXSIZE;
return 1;
}
}
int DeQueue(Queue *Q, int *x)
{
if (IsEmpty(Q))
return 0;
else
{
*x = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return 1;
}
}
int main()
{
Queue Q;
int x;
InitQueue(&Q);
EnQueue(&Q, 1);
EnQueue(&Q, 2);
EnQueue(&Q, 3);
while (!IsEmpty(&Q))
{
DeQueue(&Q, &x);
printf("%d ", x);
}
return 0;
}
```
上述代码是一个使用C语言实现的循环队列。其中,使用结构体Queue来封装队列,利用rear和front来表示队列尾和队列头的下标,其中%MAXSIZE是为了解决数组越界的问题。主函数中对队列进行初始化,并随后实现了数据的插入和删除操作,可以输出队列中的元素。
阅读全文