"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Créer une interface de file d'attente

Créer une interface de file d'attente

Publié le 2024-11-05
Parcourir:933
  • 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 :

Crie uma interface Queue

4 Ajoutez la classe CircularQueue indiquée ci-dessous à IQDemo.java.

Crie uma interface Queue

  • 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é.

Crie uma interface Queue

  • Dans cette implémentation de file d'attente, lorsque la file d'attente est pleine, une tentative de stockage d'un autre élément crée un nouveau tableau sous-jacent deux fois plus grand que l'original sera alloué, le contenu actuel de la file d'attente sera copié dans ce tableau et une référence au nouveau tableau sera stockée dans q.

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.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/devsjavagirls/crie-uma-interface-queue-5e0k?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

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