编写一个程序,实用两个链队Q1和Q2,用来分别存储由计算机产生的20个100以内的奇数和偶数,然后每行输出Q1和Q2的一个值,即奇数和偶数配对输出,直到任一队列为空为止。C语言
时间: 2024-12-16 07:22:47 浏览: 48
在C语言中,你可以使用结构体来表示链队以及链表节点,下面是一个简单的示例程序,它创建了两个链队队列Q1和Q2,并按奇偶数分组进行输出:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链队节点结构
typedef struct Node {
int value;
struct Node* next;
} QueueNode;
// 创建链队
QueueNode* createQueue() {
QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode));
newNode->value = -1; // 初始化为无效值
newNode->next = NULL;
return newNode;
}
// 将元素添加到链队
void enqueue(QueueNode** head, int value) {
QueueNode* newNode = createQueue();
newNode->value = value;
newNode->next = *head;
*head = newNode;
}
// 输出链队元素并检查是否为空
void printQueue(QueueNode* head) {
while (head != NULL) {
printf("%d ", head->value);
head = head->next;
}
printf("\n");
}
int main() {
QueueNode* Q1_head = createQueue();
QueueNode* Q2_head = createQueue();
int i, number;
for (i = 1; i <= 40; i++) { // 制作100以内的奇偶数
if (i % 2 == 0) {
enqueue(&Q2_head, i);
} else {
enqueue(&Q1_head, i);
}
}
while (Q1_head != NULL && Q2_head != NULL) {
printf("奇数: %d, 偶数: %d\n", Q1_head->value, Q2_head->value);
enqueue(&Q1_head, -1); // 模拟读取后更新指针
enqueue(&Q2_head, -1);
}
if (Q1_head == NULL) {
printf("所有奇数已输出完毕,偶数剩余:\n");
printQueue(Q2_head);
} else {
printf("所有偶数已输出完毕,奇数剩余:\n");
printQueue(Q1_head);
}
return 0;
}
```
在这个程序中,我们首先初始化两个头节点,然后遍历1到40之间的数字,奇数放入Q1,偶数放入Q2。当任一队列非空时,我们就交替从两个队列中取出一个元素进行输出。当队列之一为空时,打印剩余的另一个队列。
阅读全文
相关推荐


















