循环队列 c语言
时间: 2023-07-24 18:11:28 浏览: 110
循环队列是一种特殊的队列数据结构,它可以在固定大小的数组中实现队列的功能,且具有更高的效率。在循环队列中,队尾指针再到达数组末尾时不直接指向数组的第一个元素,而是回到数组的起始位置,形成一个循环的效果。
以下是使用C语言实现循环队列的代码示例:
```c
#define MAX_SIZE 10 //循环队列的最大容量
typedef struct{
int data[MAX_SIZE];
int front; //队头指针
int rear; //队尾指针
}CircularQueue;
//初始化循环队列
void InitQueue(CircularQueue* q){
q->front = 0;
q->rear = 0;
}
//判断循环队列是否为空
int IsEmpty(CircularQueue* q){
return (q->front == q->rear);
}
//判断循环队列是否已满
int IsFull(CircularQueue* q){
return ((q->rear + 1) % MAX_SIZE == q->front);
}
//入队
void EnQueue(CircularQueue* q, int x){
if(IsFull(q)){
printf("Queue is full.\n");
return;
}else{
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAX_SIZE; //队尾指针往后移一位
}
}
//出队
void DeQueue(CircularQueue* q){
if(IsEmpty(q)){
printf("Queue is empty.\n");
return;
}else{
q->front = (q->front + 1) % MAX_SIZE; //队头指针往后移一位
}
}
//获取队头元素
int GetFront(CircularQueue* q){
if(IsEmpty(q)){
printf("Queue is empty.\n");
return -1;
}else{
return q->data[q->front];
}
}
```
使用以上代码,你可以创建一个循环队列,并进行入队、出队、获取队头元素等操作。
阅读全文