Création d'une interface pour les files de caractères.
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 caractère 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 affiché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 pleine : 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éé d'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 = nouvelle 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
iQ.put((char) ('A' i));
// Affiche la file d'attente.
System.out.print("Contenu de la file d'attente fixe : ");
pour(i=0; 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
iQ.put((char) ('Z' - i));
// Affiche la file d'attente.
System.out.print("Contenu de la file d'attente dynamique : ");
pour(i=0; 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
iQ.put((char) ('A' i));
// Affiche la file d'attente.
System.out.print("Contenu de la file d'attente circulaire : ");
pour(i=0; 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
iQ.put((char) ('A' i));
// Affiche la file d'attente.
System.out.print("Contenu de la file d'attente circulaire : ");
pour(i=0; je
ch = iQ.get();
System.out.print(ch);
}
System.out.println("\nStockage et consommation à partir de"
" file d'attente circulaire. ");
// Stocke et consomme les éléments de la file d'attente circulaire.
pour(i=0; je
iQ.put((char) ('A' i));
ch = iQ.get();
System.out.print(ch);
}
}
}
7 Créez une version circulaire de DynQueue. Ajoutez à ICharQ une méthode reset() 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3