#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;
}