#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();
}
queue
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=324575609&siteId=291194637
Ranking