编辑代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

typedef struct Node{
    int data;
    struct Node* next;
}Node;

typedef struct{
    Node* front;
    Node* rear;
    int size;
}LinkedQueue;

void initQueue(LinkedQueue* q){
    q->front = q->rear = NULL;
    q->size = 0;
}

int isEmpty(LinkedQueue* q){
    return q->front == NULL;
}


void enqueue(LinkedQueue* q,int data){
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = NULL;

    if(q->rear == NULL){
        q->front = q->rear = newNode;
    }else{
        q->rear->next = newNode;
        q->rear = newNode;
    }
    q->size++;
}

int dequeue(LinkedQueue* q){
    if(isEmpty(q)){
        return -1;  //表示队列为空
    }
    Node* temp = q->front;
    int data = temp->data;
    q->front = q->front->next;

    if (q->front == NULL){
        q->rear = NULL;
    }

    free(temp);
    q->size--;
    return data;
}


void creatNumbers(LinkedQueue* q1, LinkedQueue* q2){
    srand(time(NULL));
    int count_odd = 0, count_even = 0;

    while(count_odd <20|| count_even<20){
        int num = rand()%100+1;
        if(num%2==1 && count_even<20){
            enqueue(q1,num);
            count_odd++;
        }else if(num%2==0 && count_even<20){
            enqueue(q2,num);
            count_even++;
        }
    }
}

int main(){
    LinkedQueue Q1,Q2;
    initQueue(&Q1);
    initQueue(&Q2);

    creatNumbers(&Q1,&Q2);

    printf("奇数偶数配对输出:\n");
    while(!isEmpty(&Q1)&&!isEmpty(&Q2)){
        int odd = dequeue(&Q1);
        int even = dequeue(&Q2);
        printf("奇数:%3d,偶数:%3d\n",odd, even);
    }
    return 0;
}