Solución a preguntas sobre programación de estructuras de datos
#includelt;stdio.hgt;
#define queuesize 100
typedef struct //definir estructura
{
nombre de char[20];
sexo de char;
} tipo de datos;
estructura typedef //definir cola de estructura
{
int front;
int rear;
int count;
bailarines de tipo de datos [queuesize]; > } cirqueue;
void initqueue(cirqueue *q)//Crear una cola vacía//
{
q-gt; front=q- gt ; rear=NULL;
q-gt; count=0;
}
int queueempty(cirqueue *q)//Determinar si la cola está vacía , devuelve 1 si está vacío; de lo contrario, devuelve 0//
{
return q-gt; count==NULL
}
void enqueue(cirqueue *q, tipo de datos p)//Ingrese la función de cola para que p ingrese a la cola//
{
q-gt;
q-gt; bailarines[q-gt; trasero]=p;
q-gt; trasero=(q-gt; trasero 1)
}
tipo de datos dequeue(cirqueue *q)//función de sacar de cola, use p para devolver el valor de sacar de cola//
{
tipo de datos
while(!queueempty(q))
{
p=q-gt;bailarines[q-gt;frente]; ;cuenta --;
q-gt; front=(q-gt; front )queuesize
return
}
}
tipo de datos queuefront(cirqueue *q)//Acceder al elemento principal de la cola//
{
return q-gt;dancers[q- gt;front ];
}
void dancepartners(datatype dancers[], int num)//Función de coincidencia de pareja de baile//
{
int i;
datatype p;
cirqueue maledancer, maleedancer; // Definir dos estructuras de cola circular //
initqueue(amp; maledancer) ); //Llama a la función initqueue() para vaciar la cola maledancer//
initqueu
e(amp; maleedancer); //Llama a la función initqueue() para vaciar la cola maleedancer//
for(i=0; ilt; num; i)
{
p=dancers[i];//La asignación general de la estructura//
if(p.sex=='f')//La mujer entra en la cola Femaledancer/ /
{
enqueue(amp;femaledancer, p);
printf("s entra al equipo femenino\n", p.name); /p>
}
else//Los hombres entran en la cola maledancer//
{
enqueue(amp; maledancer, p ); p>
printf ("s entra al equipo masculino\n", p.name);
}
}
printf("El emparejamiento la situación es la siguiente:\n");
while (!queueempty(amp;femaledancer)amp;amp;!queueempty(amp;maledancer))//Cuando ambas colas no estén vacías, retire el emparejamiento/ /
{
p=dequeue(amp; maledancer);
printf("Hombre: s", p.name); p> p=dequeue( amp; womanedancer);
printf("Emparejado correctamente con mujer: s\n", p.name
}
if(!queueempty( amp;femaledancer))//El equipo femenino no está vacío, genera el nombre de la primera persona que espera en el equipo femenino//
{
printf ("Hay d personas en el equipo femenino. ¡Espera!\n", femaleedancer.count);
p=queuefront(amp;femaledancer
printf("La primera); uno esperando en el equipo femenino es: s\n ", p.name);
}
else if(!queueempty(amp;maledancer))//El equipo masculino es no está vacío, genera el nombre de la primera persona que espera en el equipo masculino //
{
printf("¡Hay d personas esperando en el equipo masculino!\n", maledancer .count);
p=queuefront( amp; maledancer);
printf("La primera persona esperando en el equipo masculino es: s\n", p.name);
}
else printf("¡No queda nadie!\n");
}
void main()
{
tipo de datos p, bailarines[queuesize];
int i, num;
printf("Ingrese el número total de hombres y mujeres bailarines:\n");
scanf("d ",amp; num);
printf("Ingrese nombre y género,
Tales como: \nzhangsan\nm\n");
for(i=0;ilt;num;i)
{
scanf("s " ,& bailarines[i].nombre);
getchar();
scanf("c", bailarines[i].sex);
if(dancers[i].sex!='f'amp; amp;dancers[i].sex!='m')//Determine si la información ingresada es legal//
printf(" La información de la persona d-ésima es incorrecta, vuelva a ingresar", i--);
}
dancepartners(amp; bailarines[0], num);
getchar();
}