用c语言写一个环形队列
时间: 2023-11-23 20:07:20 浏览: 101
好的,下面是一个用C语言实现的简单环形队列:
```c
#include <stdio.h>
#define SIZE 5 // 队列的大小
int queue[SIZE];
int front = -1; // 队首
int rear = -1; // 队尾
// 判断队列是否为空
int is_empty() {
if (front == -1 && rear == -1) {
return 1;
} else {
return 0;
}
}
// 判断队列是否已满
int is_full() {
if ((rear + 1) % SIZE == front) {
return 1;
} else {
return 0;
}
}
// 入队
void enqueue(int element) {
if (is_full()) {
printf("Queue is full.\n");
} else if (is_empty()) {
front = 0;
rear = 0;
queue[rear] = element;
} else {
rear = (rear + 1) % SIZE;
queue[rear] = element;
}
}
// 出队
void dequeue() {
if (is_empty()) {
printf("Queue is empty.\n");
} else if (front == rear) {
printf("Dequeued element : %d\n", queue[front]);
front = -1;
rear = -1;
} else {
printf("Dequeued element : %d\n", queue[front]);
front = (front + 1) % SIZE;
}
}
// 输出队列元素
void display() {
if (is_empty()) {
printf("Queue is empty.\n");
} else {
int i;
printf("Queue elements : ");
for (i = front; i != rear; i = (i + 1) % SIZE) {
printf("%d ", queue[i]);
}
printf("%d\n", queue[i]);
}
}
int main() {
// 测试队列
enqueue(1);
enqueue(2);
enqueue(3);
enqueue(4);
display();
dequeue();
dequeue();
display();
enqueue(5);
enqueue(6);
display();
enqueue(7);
return 0;
}
```
这里实现的是一个可以存储5个元素的队列,当队列已满时,继续入队会提示队列已满;当队列为空时,继续出队会提示队列已空。
阅读全文