queue

 #include<stdio.h>//Problem (implemented with circular queue)// 
#define queuesize 100 
typedef struct //Define structure - personnel information// 

char name[20]; 
char sex; 
} datatype; 
typedef struct / /Define structure - circular queue// 

int front; 
int rear; 
int count; 
datatype dancers[queuesize]; 
} cirqueue; 
void initqueue(cirqueue *q)//Create an empty queue// 

q->front=q- >rear=NULL; 
q->count=0; 

int queueempty(cirqueue *q)//Determine whether the queue is empty, return 1 if it is empty, otherwise return 0// 

return q->count==NULL; 

void enqueue(cirqueue *q,datatype p)//Enqueue function, make p enter the queue// 

q->count++; 
q->dancers[q->rear]=p; 
q->rear=(q->rear+1)%queuesize; 

datatype dequeue(cirqueue *q)//Dequeue function, return the dequeue value with p// 

datatype p; 
while(!queueempty(q)) 

p=q->dancers[q->front]; 
q->count--; 
q->front=(q->front++)%queuesize; 
return p; 


datatype queuefront(cirqueue *q)//Access Front element // 

return q->dancers[q->front]; 

///////////////////////////// ///////////////////////////////////////////// /////////////////////////////////////
void dancepartners(datatype dancers[],int num)//// 

int i; 
datatype p; 
cirqueue maledancer,femaledancer;//Define two circular queue structures// 
initqueue(&maledancer);//Call the initqueue() function to empty the queue maledancer// 
initqueue(&femaledancer);//Call the initqueue() function to empty the queue femaledancer// 
for(i=0;i<num;i++) 

p =dancers[i];//The overall assignment of the structure// 
if(p.sex=='f')//B's entry queue femaledancer// 

enqueue(&femaledancer,p); 
printf("%s into B team \n",p.name); 

else//A's entry into the team maledancer// 

enqueue(&maledancer,p); 
printf("%s into the first team\n",p.name); 


printf(" The pairing is as follows:\n"); 
while (!queueempty(&femaledancer)&&!queueempty(&maledancer))//When both queues are not empty, dequeue pairing// 

p=dequeue(&maledancer); 
printf( "A:%s",p.name); 
p=dequeue(&femaledancer); 
printf("And B: %s paired successfully\n",p.name); 

if(!queueempty(&femaledancer))//Team B is not empty, output the name of the first waiter in Team B// 

printf("There are %d people in Team B waiting!\n",femaledancer.count) ; 
p=queuefront(&femaledancer); 
printf("The first person waiting in team B is: %s\n",p.name); 

else if(!queueempty(&maledancer))//A is not empty, output The name of the first waiter in Team A // 

printf("There are %d people in Team A waiting!\n",maledancer.count); 
p=queuefront(&maledancer); 
printf("The first in Team A What is waiting is: %s\n",p.name); 

else printf("^-^No one is left^-^!\n"); 

void main() 

datatype p,dancers[queuesize]; 
int i,num; 
printf("Enter the total number of people A and B:\n"); 
scanf("%d",&num); 


dancepartners(&dancers[0],num); 
getchar();  
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324575609&siteId=291194637