用devc++实现循环队列
时间: 2024-04-10 18:26:00 浏览: 72
C++实现循环队列
循环队列是一种常见的数据结构,可以在固定大小的数组上实现队列的功能。下面是使用DevC++实现循环队列的基本步骤:
1. 首先,需要定义一个固定大小的数组作为队列的存储空间,并定义两个指针front和rear分别指向队列的头部和尾部。
2. 初始化队列时,将front和rear都设置为-1,表示队列为空。
3. 实现入队操作(enqueue):
- 首先检查队列是否已满,即判断(rear+1)%数组大小是否等于front。如果相等,则表示队列已满,无法插入新元素。
- 如果队列不满,则将rear指针向后移动一位,即rear=(rear+1)%数组大小,并将新元素插入rear指向的位置。
4. 实现出队操作(dequeue):
- 首先检查队列是否为空,即判断front是否等于-1。如果等于-1,则表示队列为空,无法执行出队操作。
- 如果队列不为空,则将front指针向后移动一位,即front=(front+1)%数组大小,并返回front指向的元素作为出队元素。
5. 其他常用操作:
- 判断队列是否为空:当front等于-1时,表示队列为空。
- 判断队列是否已满:当(rear+1)%数组大小等于front时,表示队列已满。
下面是一个使用DevC++实现循环队列的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 5
int queue[MAX_SIZE];
int front = -1;
int rear = -1;
void enqueue(int data) {
if ((rear + 1) % MAX_SIZE == front) {
printf("Queue is full. Cannot enqueue.\n");
return;
}
rear = (rear + 1) % MAX_SIZE;
queue[rear] = data;
}
int dequeue() {
if (front == -1) {
printf("Queue is empty. Cannot dequeue.\n");
return -1;
}
int data = queue[front];
if (front == rear) {
front = -1;
rear = -1;
} else {
front = (front + 1) % MAX_SIZE;
}
return data;
}
int isEmpty() {
return front == -1;
}
int isFull() {
return (rear + 1) % MAX_SIZE == front;
}
int main() {
enqueue(1);
enqueue(2);
enqueue(3);
printf("Dequeued element: %d\n", dequeue());
enqueue(4);
enqueue(5);
if (isFull()) {
printf("Queue is full.\n");
} else {
printf("Queue is not full.\n");
}
while (!isEmpty()) {
printf("Dequeued element: %d\n", dequeue());
}
if (isEmpty()) {
printf("Queue is empty.\n");
} else {
printf("Queue is not empty.\n");
}
return 0;
}
```
阅读全文