用c语言编写循环队列的初始化,入队列和出队列算法,并在主函数中调用
时间: 2024-11-15 10:28:23 浏览: 56
在C语言中,我们可以使用数组来实现循环队列,因为它可以利用数组下标溢出的方式来模拟“头尾相连”的特性。下面是一个简单的循环队列结构及相关的初始化、入队(Enqueue)、和出队(Dequeue)操作:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE]; // 队列元素数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void init(Queue *q) {
q->front = -1;
q->rear = -1;
}
// 入队操作 (Enqueue)
void enqueue(Queue *q, int value) {
if ((q->rear + 1) % MAX_SIZE == q->front) { // 队满
printf("Queue is full.\n");
return;
}
q->rear = (q->rear + 1) % MAX_SIZE; // 更新队尾
q->data[q->rear] = value; // 插入元素
printf("Inserted element %d at rear.\n", value);
}
// 出队操作 (Dequeue)
int dequeue(Queue *q) {
if (q->front == -1) { // 队空
printf("Queue is empty.\n");
return -1; // 返回一个特殊值表示队列为空
}
int removed_value = q->data[q->front]; // 获取并移除队头元素
q->front = (q->front + 1) % MAX_SIZE; // 更新队头
printf("Removed element %d from front.\n", removed_value);
return removed_value;
}
// 主函数演示操作
int main() {
Queue myQueue;
init(&myQueue);
enqueue(&myQueue, 1); // 入队1
enqueue(&myQueue, 2); // 入队2
enqueue(&myQueue, 3); // 入队3
int removed = dequeue(&myQueue); // 出队并打印结果
if (removed != -1) {
printf("Removed value: %d\n", removed);
}
return 0;
}
```
阅读全文