C语言队列实现:随机奇偶数配对输出
C语言队列实现:随机奇偶数配对输出
本文将介绍如何使用C语言编写一个程序,使用两个队列 q1 和 q2 分别存储计算机随机生成的20个100以内的奇数和偶数,然后每行输出 q1 和 q2 的一个值,即奇数和偶数配对输出,直到任一队列为空为止。
代码实现
以下是完整的C语言代码:c#include <stdio.h>#include <stdlib.h>#include <time.h>
// 定义队列结构体typedef struct Queue { int front, rear, size; unsigned capacity; int* array;} Queue;
// 创建一个队列Queue* createQueue(unsigned capacity) { Queue* queue = (Queue*)malloc(sizeof(Queue)); queue->capacity = capacity; queue->front = queue->size = 0; queue->rear = capacity - 1; queue->array = (int*)malloc(queue->capacity * sizeof(int)); return queue;}
// 队列是否已满int isFull(Queue* queue) { return (queue->size == queue->capacity);}
// 队列是否为空int isEmpty(Queue* queue) { return (queue->size == 0);}
// 入队void enqueue(Queue* queue, int item) { if (isFull(queue)) return; queue->rear = (queue->rear + 1) % queue->capacity; queue->array[queue->rear] = item; queue->size = queue->size + 1;}
// 出队int dequeue(Queue* queue) { if (isEmpty(queue)) return -1; int item = queue->array[queue->front]; queue->front = (queue->front + 1) % queue->capacity; queue->size = queue->size - 1; return item;}
// 随机生成20个100以内的奇数和偶数,并存入队列void generateNumbers(Queue* q1, Queue* q2) { srand(time(NULL)); int i, num; for (i = 0; i < 20; i++) { num = rand() % 100 + 1; if (num % 2 == 0) enqueue(q2, num); else enqueue(q1, num); }}
int main() { Queue* q1 = createQueue(20); Queue* q2 = createQueue(20);
generateNumbers(q1, q2);
while (!isEmpty(q1) && !isEmpty(q2)) { printf('%d %d
', dequeue(q1), dequeue(q2)); }
free(q1->array); free(q1); free(q2->array); free(q2);
return 0;}
代码说明
-
队列结构体定义: 代码首先定义了一个名为
Queue的结构体,用于表示队列。该结构体包含以下成员: *front: 队首指针 *rear: 队尾指针 *size: 队列当前大小 *capacity: 队列最大容量 *array: 存储队列元素的数组 -
队列操作函数: 代码中定义了以下队列操作函数: *
createQueue: 创建一个指定容量的队列 *isFull: 判断队列是否已满 *isEmpty: 判断队列是否为空 *enqueue: 入队操作,将元素添加到队尾 *dequeue: 出队操作,从队首移除并返回元素 -
生成随机数并存入队列:
generateNumbers函数首先生成20个100以内的随机数,然后根据奇偶性分别存入队列q1和q2。 -
配对输出:
main函数中,首先生成两个队列q1和q2,然后调用generateNumbers函数填充队列。接着使用while循环,当两个队列都不为空时,分别从两个队列中取出一个元素并配对输出。
编译运行
将以上代码保存为一个 .c 文件,例如 queue_odd_even.c,然后使用C编译器进行编译:bashgcc queue_odd_even.c -o queue_odd_even
编译成功后,运行可执行文件 queue_odd_even:bash./queue_odd_even
程序将会输出类似以下内容的奇偶数配对结果:
71 23 54...
总结
本文介绍了如何使用C语言队列实现随机奇偶数的配对输出。通过学习本例,你可以更好地理解队列数据结构及其应用。
原文地址: https://www.cveoy.top/t/topic/bg6j 著作权归作者所有。请勿转载和采集!