C语言如何输出从队头到队尾的数
时间: 2024-09-30 19:02:22 浏览: 24
存储队中元素个数(数据结构C语言)
在C语言中,如果想要从队列(Queue)的头部开始遍历并输出所有元素,通常需要使用循环结构和指针操作。假设我们已经有一个动态大小的队列,并且实现了队列的插入(enqueue)和删除(dequeue)操作。这里是一个基本的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义队列结构体
typedef struct Queue {
int* elements; // 存储元素的数组
int front; // 队头索引
int rear; // 队尾索引
int size; // 队列实际容量
} Queue;
// 添加元素到队尾
void enqueue(Queue* queue, int value) {
if (queue->size == queue->rear + 1) { // 当满时扩大空间
queue->size *= 2;
queue->elements = (int*) realloc(queue->elements, sizeof(int) * queue->size);
}
queue->elements[queue->rear] = value;
queue->rear++;
}
// 从队头删除元素
int dequeue(Queue* queue) {
if (queue->front == queue->rear) { // 如果队列为空,则返回错误
printf("Queue is empty.\n");
return -1;
}
int value = queue->elements[queue->front];
queue->front++;
return value;
}
// 输出队列元素
void print_queue(Queue* queue) {
for (int i = queue->front; i <= queue->rear; i++) {
printf("%d ", queue->elements[i]);
}
printf("\n");
}
int main() {
Queue q;
q.front = q.rear = 0;
q.size = 5;
// 插入一些元素
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
enqueue(&q, 4);
enqueue(&q, 5);
// 输出队列内容
print_queue(&q);
return 0;
}
```
在这个例子中,`enqueue()`函数用于添加元素,`dequeue()`用于移除元素,`print_queue()`则遍历队列并打印所有数字。注意,在实际应用中,队列可能会使用链表而不是数组来实现,上述代码适用于数组类型的队列。
阅读全文