建立一个循环队列,实现出队和入队操作的C语音程序
时间: 2023-06-06 21:05:52 浏览: 47
好的,以下是建立循环队列并实现入队和出队操作的C语言程序:
```
#include <stdio.h>
#define MAX_SIZE 5
int front = -1, rear = -1;
int queue[MAX_SIZE];
void enqueue(int value) {
if ((front == 0 && rear == MAX_SIZE - 1) || rear == front - 1) {
printf("队列已满,无法入队。\n");
return;
}
else if (front == -1 && rear == -1) {
front = rear = 0;
}
else if (rear == MAX_SIZE - 1) {
rear = 0;
}
else {
rear++;
}
queue[rear] = value;
printf("%d 入队成功。\n", value);
}
void dequeue() {
if (front == -1 && rear == -1) {
printf("队列为空,无法出队。\n");
return;
}
int value = queue[front];
printf("%d 出队成功。\n", value);
if (front == rear) {
front = rear = -1;
}
else if (front == MAX_SIZE - 1) {
front = 0;
}
else {
front++;
}
}
int main() {
enqueue(1);
enqueue(2);
enqueue(3);
enqueue(4);
enqueue(5); // 队列已满
dequeue();
dequeue();
dequeue();
dequeue();
dequeue(); // 队列为空
return 0;
}
```
这是一个基于数组的循环队列,使用了front和rear两个指针来分别指向队首和队尾。入队时需要判断队列是否已满,如果已满则无法入队;否则将新元素赋值给rear指向的位置,并更新rear指针。出队时需要判断队列是否为空,如果为空则无法出队;否则将队首元素取出并赋值给value,将front指针向后移动一位并删除对应元素。