Red de conocimiento informático - Aprendizaje de código fuente - Solución a preguntas sobre programación de estructuras de datos

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

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();

}