Création d'une interface pour les files d'attente de personnages.
Trois implémentations à développer :
File d'attente linéaire de taille fixe.
File d'attente circulaire (réutilise l'espace du tableau).
File d'attente dynamique (s'agrandit selon les besoins).
1 Créez un fichier appelé ICharQ.java
// Interface de file d'attente de caractères.
interface publique ICharQ {
// Insère un caractère dans la file d'attente.
void put(char ch);
// Supprime un personnage de la file d'attente.
char get();
>
2 Créez un fichier appelé IQDemo.java.
3 Commencez à créer IQDemo.java en ajoutant la classe FixedQueue présentée ici :
4 Ajoutez la classe CircularQueue indiquée ci-dessous à IQDemo.java.
Opération de file d'attente circulaire : réutilise l'espace libéré dans le tableau lors de la suppression d'éléments. Il peut stocker un nombre illimité d'éléments, tant qu'il y a des suppressions.
Conditions limites : La file d'attente n'est pas pleine lorsque la fin du tableau est atteinte, mais lorsqu'un élément non supprimé est écrasé par un nouveau.
La méthode put() doit vérifier plusieurs conditions pour déterminer si la file d'attente est pleine.
Conditions pour une file d'attente complète : la file d'attente est pleine si : putloc est une unité plus petite que getloc. putloc est à la fin du tableau et getloc est au début.
Condition de file d'attente vide : la file d'attente est vide lorsque getloc et putloc sont égaux.
Taille du tableau : le tableau sous-jacent est créé une unité plus grande que la taille de la file d'attente pour faciliter les vérifications.
5 Insérez la classe DynQueue indiquée ci-dessous dans IQDemo.java. Il implémente une file d'attente « extensible » qui augmente sa taille lorsque l'espace est épuisé.
6 Pour démontrer les trois implémentations d'ICharQ, insérez la classe suivante dans IQDemo.java. Il utilise une référence ICharQ pour accéder à toutes les files d'attente.
classe IQDemo {
public static void main(String args[]) {
FixeQueue q1 = nouveau FixeQueue(10);
DynQueue q2 = nouveau DynQueue(5);
CircularQueue q3 = new CircularQueue(10);
ICharQ iQ;
char ch;
int je;
iQ = q1;
// Insère quelques caractères dans la file d'attente fixe.
pour(i=0; je < 10; je )
iQ.put((char) ('A' i));
// Affiche la file d'attente.
System.out.print("Contenu de la file d'attente fixe : ");
pour(i=0; je < 10; je ) {
ch = iQ.get();
System.out.print(ch);
>
System.out.println();
iQ = q2;
// Insère quelques caractères dans la file d'attente dynamique.
pour(i=0; je < 10; je )
iQ.put((char) ('Z' - i));
// Affiche la file d'attente.
System.out.print("Contenu de la file d'attente dynamique : ");
pour(i=0; je < 10; je ) {
ch = iQ.get();
System.out.print(ch);
>
System.out.println();
iQ = q3;
// Insère quelques caractères dans la file d'attente circulaire.
pour(i=0; je < 10; je )
iQ.put((char) ('A' i));
// Affiche la file d'attente.
System.out.print("Contenu de la file d'attente circulaire : ");
pour(i=0; je < 10; je ) {
ch = iQ.get();
System.out.print(ch);
>
System.out.println();
// Insère plus de caractères dans la file d'attente circulaire.
pour(i=10; je < 20; je )
iQ.put((char) ('A' i));
// Affiche la file d'attente.
System.out.print("Contenu de la file d'attente circulaire : ");
pour(i=0; je < 10; je ) {
ch = iQ.get();
System.out.print(ch);
>
System.out.println("nStore et consommer depuis"
"file d'attente circulaire.");
// Stocke et consomme les éléments de la file d'attente circulaire.
pour(i=0; je < 20; je ) {
iQ.put((char) ('A' i));
ch = iQ.get();
System.out.print(ch);
>
>
>
7 Créez une version circulaire de DynQueue. Ajoutez une méthode reset() à ICharQ qui nettoie la file d'attente. Créez une méthode statique qui copie le contenu d'un type de file d'attente vers un autre.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!