File d'attente prioritaire
Si nous attribuons un nombre à chaque élément pour marquer sa priorité, nous pourrions aussi bien que les nombres plus petits aient une priorité plus élevée afin que nous puissions accéder à l'élément de priorité le plus élevé d'une collection et de la recherche et de le supprimer. De cette façon, nous introduisons une structure de données comme la file d'attente prioritaire. Une file d'attente prioritaire est une collection de 0 ou plus d'éléments, chaque élément a une priorité. Les opérations effectuées sur la file d'attente prioritaire incluent (1) la recherche (2) Insérez une nouvelle suppression (3) la suppression. Généralement, l'opération de recherche est utilisée pour rechercher l'élément avec la plus grande priorité, et l'opération de suppression est utilisée pour supprimer l'élément. Pour les éléments ayant la même priorité, ils peuvent être traités dans le premier ordre en avant ou en toute priorité.
File d'attente de simulation Java Array
Une file d'attente est une table linéaire spéciale qui n'autorise que les opérations de suppression à l'extrémité avant de la table et insérer les opérations à l'arrière de la table. La fin qui effectue l'opération d'insertion s'appelle la queue de l'équipe, et la fin qui effectue l'opération de suppression s'appelle la tête de l'équipe. Il s'agit du premier principe (FIFO) du premier à l'abri (FIFO) que nous utilisons souvent. La liste dans Java peut être utilisée comme file d'attente. Si vous ajoutez des éléments à la fin de la file d'attente, utilisez la méthode list.add, et si vous supprimez les éléments de la tête de la file d'attente, utilisez la méthode list.remove.
Exemple de structure de file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente:
Datastruc de package; import java.util.arrays; Importer java.util.comparator; / ** * Utilisez des tableaux pour simuler la structure de table linéaire de premier rang et première ligne avec une priorité élevée. * Similaire à Treeset et Treemap en utilisant le comparateur * / classe publique SimulatePriorityQueue {public static void main (String [] args) {simulatePriorityqueue queue = new SimulateRirityeue (4); // Simulateue Queue = new simulateue (); // System.out.println ("Récupérez l'élément:" + queue.Remove ()); queue.insert (1); queue.insert (3); queue.insert (2); queue.insert (5); queue.insert (4); System.out.println ("Size:" + Queue.Size ()); System.out.println ("Peek:" + Queue.Peek ()); System.out.println ("Élément de prise:" + queue.Peek ()); System.out.println ("Élément de prise:" + queue.Remove ()); System.out.println ("Élément de prise:" + queue.Remove ()); System.out.println ("Élément d'extrait:" + queue.reMove ()); // System.out.println ("Élément d'extraction:" + queue.reMove ()); System.out.println ("Size:" + Queue.Size ()); System.out.println (); } private int msize = 3; // taille privée int [] Marray; // Array privé int mNextItem; // Position suivante peut également être considérée comme le nombre actuel d'éléments public simulatePriorityQueue () {marray = new int [mSize]; mNextItem = 0; } public simulatePriorityQueue (int size) {this.mSize = size; Marray = new int [MSIze]; mNextItem = 0; } / ** * INSERT Élément * @param item * / public void insert (int item) {if (! Isull ()) {Marray [mNextItem ++] = item; pour (int i = 0; i <mnextItem; i ++) {// bubbleStone for (int j = 0; j <mnextItem - 1; j ++) {if (marray [j]> marray [j + 1]) {marray [j] = marray [j + 1] + 0 * (marray [j + 1] = marray [j]); System.out.println (arrays.tostring (Marray)); }} System.out.println (arrays.tostring (Marray)); } else {System.out.println ("----------------"); }} / ** * supprimer l'élément First-in First-Out * @return * / public int dis dove () {if (! Isempty ()) {return Marray [- mNextItem]; } else {lance un nouveau IllégalArgumentException ("aucun élément ne peut être retiré"); }} / ** * Vérifiez l'élément précédent * @return * / public int peek () {return Marray [mNextItem - 1]; } / ** * est-ce vide * @return * / public boolean isEmpty () {return mnextitem == 0; } / ** * est-il complet * @return * / public boolean isfull () {return mnextitem == MSIZE; } / ** * size * @return * / public int size () {return mNextItem; }} Résultat de sortie:
[1, 0, 0, 0] [1, 3, 0, 0] [1, 2, 3, 0] [1, 2, 3, 0] [1, 2, 3, 5] ---------------------------------------------------------------------------------------------------