用c语言写出 数据序列:23, 14,25,27,37, 56 演示:1)将数据序列插入循环队列中; 2)出队,显示元素值 3)输出队列元素数量 / 4)判空
时间: 2024-10-12 09:11:52 浏览: 30
在C语言中,我们可以使用动态数组和循环队列(也称为环形缓冲区)来实现这个功能。首先,我们需要创建一个结构体表示队列元素,并实现队列的相关操作。以下是完整的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义队列结构体
typedef struct {
int *data; // 存储数据的指针
int front, rear; // 队头和队尾索引
int capacity; // 队列容量
} Queue;
// 初始化队列
Queue* init_queue(int capacity) {
Queue *queue = (Queue*)malloc(sizeof(Queue));
queue->data = (int*)malloc(capacity * sizeof(int));
queue->front = -1;
queue->rear = -1;
queue->capacity = capacity;
return queue;
}
// 插入元素到队列尾部
void enqueue(Queue *queue, int value) {
if ((queue->rear + 1) % queue->capacity == queue->front) { // 判满
printf("Queue is full!\n");
return;
}
queue->rear = (queue->rear + 1) % queue->capacity; // 环形更新队尾
queue->data[queue->rear] = value;
}
// 出队并返回元素值(如果队列不为空)
int dequeue(Queue *queue) {
if (queue->front == -1) { // 判空
printf("Queue is empty.\n");
return -1;
}
int value = queue->data[queue->front];
queue->front = (queue->front + 1) % queue->capacity; // 更新队头
return value;
}
// 显示当前队列元素值
void display_queue(Queue *queue) {
if (queue->front == -1) {
printf("Queue is empty.\n");
} else {
for (int i = queue->front; i != queue->rear; i = (i + 1) % queue->capacity) {
printf("%d ", queue->data[i]);
}
printf("%d\n", queue->data[queue->rear]); // 如果有剩余元素,打印最后一个
}
}
// 输出队列元素数量
void count_elements(Queue *queue) {
printf("Number of elements in the queue: %d\n", queue->rear >= queue->front ? queue->rear - queue->front + 1 : queue->capacity);
}
int main() {
Queue *queue = init_queue(6); // 初始化一个容量为6的队列
int data[] = {23, 14, 25, 27, 37, 56};
int i;
// 将数据序列插入队列
for (i = 0; i < sizeof(data) / sizeof(data[0]); i++) {
enqueue(queue, data[i]);
}
// 出队并显示元素值
for (i = 0; i < sizeof(data) / sizeof(data[0]); i++) {
int value = dequeue(queue);
if (value != -1)
printf("Dequeued element: %d\n", value);
}
display_queue(queue); // 显示队列内容
count_elements(queue); // 输出队列元素数量
free(queue->data);
free(queue);
return 0;
}
```
这段代码首先初始化了一个队列,然后将给定的数据序列逐个插入队列,接着出队并显示元素,最后统计并输出队列元素数量。注意,这里只处理了队列非空的情况,当队列满或空时会有相应的提示。运行程序,你会看到预期的结果。
阅读全文