Creación de una interfaz para colas de personajes.
Tres implementaciones a desarrollar:
Cola lineal de tamaño fijo.
Cola circular (reutiliza el espacio de la matriz).
Cola dinámica (crece según sea necesario).
1 Crea un archivo llamado ICharQ.java
// Interfaz de cola de caracteres.
interfaz pública ICharQ {
// Inserta un carácter en la cola.
poner vacío (char ch);
// Elimina un carácter de la cola.
obtener caracteres();
}
2 Crea un archivo llamado IQDemo.java.
3 Comience a crear IQDemo.java agregando la clase FixQueue que se muestra aquí:
4 Agregue la clase CircularQueue que se muestra a continuación a IQDemo.java.
Operación de cola circular: Reutiliza el espacio liberado en la matriz al eliminar elementos. Puede almacenar un número ilimitado de elementos, siempre que haya eliminaciones.
Condiciones de límite: la cola no está llena cuando se llega al final de la matriz, sino cuando un elemento no eliminado se sobrescribe con uno nuevo.
El método put() debe verificar varias condiciones para determinar si la cola está llena.
Condiciones para cola llena: La cola está llena si: putloc es una unidad más pequeña que getloc. putloc está al final de la matriz y getloc está al principio.
Condición de cola vacía: la cola está vacía cuando getloc y putloc son iguales.
Tamaño de la matriz: la matriz subyacente se crea una unidad más grande que el tamaño de la cola para facilitar las comprobaciones.
5 Inserte la clase DynQueue que se muestra a continuación en IQDemo.java. Implementa una cola “extensible” que amplía su tamaño cuando se acaba el espacio.
6 Para demostrar las tres implementaciones de ICharQ, inserte la siguiente clase en IQDemo.java. Utiliza una referencia ICharQ para acceder a todas las colas.
clase IQDemo {
público estático vacío principal (String args []) {
Cola Fija q1 = nueva Cola Fija(10);
DynQueue q2 = nuevo DynQueue(5);
CircularQueue q3 = nueva CircularQueue(10);
ICharQ iQ;
char ch;
int i;
iQ = q1;
// Inserta algunos caracteres en la cola fija.
para(i=0; yo
iQ.put((char) ('A' i));
// Muestra la cola.
System.out.print("Contenido de la cola fija: ");
para(i=0; yo
ch = iQ.get();
System.out.print(ch);
}
Sistema.out.println();
iQ = q2;
// Inserta algunos caracteres en la cola dinámica.
para(i=0; yo
iQ.put((char) ('Z' - i));
// Muestra la cola.
System.out.print("Contenido de la cola dinámica: ");
para(i=0; yo
ch = iQ.get();
System.out.print(ch);
}
Sistema.out.println();
iQ = q3;
// Inserta algunos caracteres en la cola circular.
para(i=0; yo
iQ.put((char) ('A' i));
// Muestra la cola.
System.out.print("Contenido de la cola circular: ");
para(i=0; yo
ch = iQ.get();
System.out.print(ch);
}
Sistema.out.println();
// Inserta más caracteres en la cola circular.
para(i=10; yo
iQ.put((char) ('A' i));
// Muestra la cola.
System.out.print("Contenido de la cola circular: ");
para(i=0; yo
ch = iQ.get();
System.out.print(ch);
}
System.out.println("\nAlmacenamiento y consumo desde"
"cola circular.");
// Almacena y consume elementos de la cola circular.
para(i=0; yo
iQ.put((char) ('A' i));
ch = iQ.get();
System.out.print(ch);
}
}
}
7 Crea una versión circular de DynQueue. Agregue a ICharQ un método reset() que conecte la cola. Cree un método estático que copie el contenido de un tipo de cola a otro.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3