循环队列的入队、出队运算的实现源代码
时间: 2023-09-03 17:08:12 浏览: 62
循环队列是一种环形数据结构,它具有先进先出(FIFO)的特性。在循环队列中,队列的尾部指向队列的最后一个元素,当队列满时,新的元素插入到队列头部,队列头部指向的元素被丢弃。下面是循环队列的入队和出队运算的实现源代码。
```c
#define MAX_SIZE 10
int queue[MAX_SIZE];
int front = -1;
int rear = -1;
// 入队操作
void enqueue(int data) {
if ((rear + 1) % MAX_SIZE == front) {
printf("Queue is full.\n");
return;
} else if (front == -1 && rear == -1) {
front = 0;
rear = 0;
} else {
rear = (rear + 1) % MAX_SIZE;
}
queue[rear] = data;
}
// 出队操作
int dequeue() {
int data;
if (front == -1 && rear == -1) {
printf("Queue is empty.\n");
return -1;
} else if (front == rear) {
data = queue[front];
front = -1;
rear = -1;
} else {
data = queue[front];
front = (front + 1) % MAX_SIZE;
}
return data;
}
```
在这个实现中,我们定义了一个 `MAX_SIZE` 常量来表示队列的最大容量。我们使用一个数组 `queue` 来存储队列元素,使用两个指针 `front` 和 `rear` 分别表示队列头部和尾部的位置。`enqueue` 函数用于将元素插入队列尾部,如果队列已满则返回错误信息。`dequeue` 函数用于从队列头部取出一个元素,如果队列为空则返回错误信息。为了实现循环队列的特性,我们使用了取模运算来计算队列尾部和头部的位置。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)