用c语言显示一个队列中所有的元素
时间: 2024-10-09 19:13:32 浏览: 19
在 C 语言中,可以使用数组或链表来实现队列,这里以数组为例说明如何显示队列中的所有元素。下面是一个使用数组实现的简单队列示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define QUEUE_SIZE 5
typedef struct Queue {
int* queue;
int front; // 队首指针
int rear; // 队尾指针
int count; // 队列元素个数
} Queue;
// 初始化队列
Queue* create_queue(int capacity) {
Queue* q = (Queue*)malloc(sizeof(Queue));
if (q == NULL) {
printf("Memory allocation failed.\n");
return NULL;
}
q->queue = (int*)malloc(capacity * sizeof(int));
if (q->queue == NULL) {
free(q);
return NULL;
}
q->front = q->rear = -1;
q->count = 0;
return q;
}
// 入队操作
void enqueue(Queue* q, int value) {
if (q->count == QUEUE_SIZE - 1) {
printf("Queue is full.\n");
return;
}
q->rear = (q->rear + 1) % QUEUE_SIZE; // 使用模运算保持循环队列性质
q->queue[q->rear] = value;
q->count++;
}
// 出队操作
int dequeue(Queue* q) {
if (q->count == 0) {
printf("Queue is empty.\n");
return -1;
}
int value = q->queue[q->front];
q->front = (q->front + 1) % QUEUE_SIZE; // 同样使用模运算
q->count--;
return value;
}
// 显示队列中的所有元素
void display_queue(Queue* q) {
if (q->count == 0) {
printf("No elements in the queue.\n");
return;
}
printf("Elements in the queue:\n");
for (int i = 0; i < q->count; ++i) {
printf("%d ", q->queue[(q->front + i) % QUEUE_SIZE]);
}
printf("\n");
}
// 测试
int main() {
Queue* q = create_queue(QUEUE_SIZE);
if (q) {
enqueue(q, 1);
enqueue(q, 2);
enqueue(q, 3);
enqueue(q, 4);
enqueue(q, 5);
display_queue(q);
free(q->queue);
free(q);
}
return 0;
}
```
在这个示例中,我们创建了一个队列,然后添加一些元素。`display_queue` 函数遍历队列并打印每个元素。请注意,因为队列的元素是按照先进先出(FIFO)原则存储的,所以我们只需要从 `front` 开始到 `front + count - 1` 的范围显示。