Pilas y colas: instancias de aplicación para pilas y colas: instancias de aplicación para colas
Descripción del problema
Supongamos que en un baile de fin de semana, hombres y mujeres forman un equipo al entrar al salón de baile. Cuando comience el baile, el líder del grupo masculino y la líder del grupo femenino formarán parejas de baile.
Si los números iniciales de los dos equipos son diferentes y los que no están emparejados en el equipo más largo están esperando la siguiente ronda de música de baile, ahora debemos escribir un algoritmo para simular el problema de emparejamiento de parejas. arriba.
Análisis del problema
El hombre o la mujer que se une primero al equipo también deja el equipo para formar socios, por lo que este problema tiene características típicas de primero en entrar, primero en salir, y la cola se puede utilizar como estructura de datos del algoritmo.
El algoritmo supone que los registros de hombres y mujeres se almacenan en una matriz como entrada, y luego todos los elementos de la matriz se escanean en secuencia para decidir si unirse a una banda de chicos según el género.
Cuando se construyen las dos colas, el equipo femenino pondrá en cola los elementos capitanes actuales de los dos equipos para formar una asociación hasta que una cola esté vacía. En este momento, si un equipo todavía tiene que esperar por un juego,
El algoritmo de coincidencia genera el número de personas esperando en la cola y el nombre de la persona que espera al frente de la cola. Él o ella será el primero en conseguir pareja al comienzo de la siguiente ronda de baile.
Algoritmos específicos y definiciones de tipos relacionados
estructura typedef {
Nombre del personaje[];
Sexo encantador // Género F significa; femenino, M significa masculino.
}Persona;
typedef Persona tipo de datos; //Cambia el tipo de datos de los elementos en la cola a Persona.
void DancePartner(bailarín individual[] entero)
{//numEl número de hombres y mujeres que bailan almacenados en la estructura de matriz de bailarines es el número de bailarines.
int I;
人p;
CirQueue Mdancers Fdancers
init queue(& mdancers); //Inicializar men Queue
init queue(& fdancers); //Inicializa la cola de damas
for(I = I<numI++){ p=" "Agrega bailarinas en orden por género.
p = bailarines[I];
if(p.sex=='F ')
queue(& ampfbailarines . p); el grupo de mujeres
Otros
Hacer cola (& ampmdancers . p); // Alinear el grupo de hombres
}
printf (" La pareja de baile es:\ n \ n ");
Y (! Queue Clear (& amp Advanced) y amp& amp! Queue Clear (& ampMdancers)){
//Ingrese en secuencia los nombres de las parejas masculinas y femeninas.
p = quitar la cola. fdancers); //La dama sale de la cola
printf("%s", p. name); //Imprime el nombre de la dama en la fila.
p = quitar la cola. mdancers); //Los hombres abandonan la cola
printf("%s\n ", p. name); //Imprime el nombre de la persona en la cola.
}
if (!Queue cleared(& ampFdancers)){ //Ingrese el número de damas restantes y el nombre de la dama al frente de la cola.
printf("\nHay %d damas esperando la siguiente ronda.\n ", fdancers . count);
p = cola. fdancers); //Tome al líder del grupo como ejemplo
printf("%s será el primero en conseguir un compañero.\n ", p . nombre); De lo contrario
p>If (! Queue cleared (& ampMdancers)) {//Muestre el número restante de miembros del equipo masculino y el nombre del líder.
printf("\nHay %d personas esperando la siguiente ronda.
\n ", mdacers.count);
p = queue front.mdancers);
printf("%s será el primero en conseguir pareja.\n ", p . nombre);
}
}//Compañero de baile
Lishi Xinzhi/Article/program/sjjg/201311/23917