用c语言编写一个能实现顺序循环队列的入队,出队,取队首元素和显示队列元素的小程序
时间: 2024-10-18 10:18:43 浏览: 46
在C语言中,我们可以使用数组来实现一个简单的顺序循环队列。这里是一个基础的示例:
```c
#include <stdio.h>
#define MAX_SIZE 10 // 队列的最大容量
typedef struct {
int data[MAX_SIZE]; // 存储队列数据的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue* queue) {
queue-1;
queue->rear = -1;
}
// 入队操作 (如果队满则不添加)
void enqueue(Queue* queue, int value) {
if (queue->rear == (MAX_SIZE - 1)) {
printf("Queue is full.\n");
} else {
queue->rear = (queue->rear + 1) % MAX_SIZE; // 循环处理索引溢出
queue->data[queue->rear] = value;
if (queue->front == -1) queue->front = 0; // 如果队列为空,设置队头为0
}
}
// 出队操作 (如果队空则返回错误)
int dequeue(Queue* queue) {
if (queue->front == -1) {
printf("Queue is empty.\n");
return -1; // 返回错误码
} else {
int value = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
return value;
}
}
// 取队首元素
int getFront(Queue* queue) {
if (queue->front == -1;
}
return queue->data[queue->front];
}
// 显示队列元素
void displayQueue(Queue* queue) {
if (queue->front == -1) {
printf("Queue is empty.\n");
} else {
for (int i = queue->front; i != queue->rear; i = (i + 1) % MAX_SIZE) {
printf("%d ", queue->data[i]);
}
if (queue->front == queue->rear) {
printf("%d", queue->data[queue->front]); // 处理队尾等于队头的情况
}
printf("\n");
}
}
int main() {
Queue queue;
initQueue(&queue);
// 示例操作
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
displayQueue(&queue); // 输出: 1 2 3
printf("Dequeued: %d\n", dequeue(&queue)); // 输出: Dequeued: 1
displayQueue(&queue); // 输出: 2 3
return 0;
}
```
这个程序定义了一个`Queue`结构体,包含了数组、队头和队尾指针。通过`enqueue`, `dequeue`, `getFront`, 和 `displayQueue` 函数实现了队列的基本操作。注意,当队列满或空时会打印相应的提示信息。
阅读全文
相关推荐


















