Méthodes pour implémenter les files d'attente de boucle à l'aide de Java:
1. Ajoutez une taille d'attribut pour enregistrer actuellement le nombre d'éléments.
Le but est lorsque la tête = arrière. Par taille = 0 ou taille = longueur du tableau. pour distinguer la file d'attente comme vide, ou la file d'attente est pleine.
2. Seul l'élément de taille de tableau -1 est stocké dans le tableau, garantissant que l'arrière ne sera pas égal à la tête après l'avoir tourné. C'est à ce moment que la file d'attente est pleine. arrière + 1 = tête, il n'y a qu'un seul élément au milieu.
Quand arrière = tête. La file d'attente doit être vide.
Les types d'opérations convenues aux deux extrémités de la file d'attente sont différentes:
La fin qui peut être supprimée est appelée la tête de l'équipe, et une telle opération est également appelée Dequeue;
La fin qui peut être insérée est appelée la queue de l'équipe, et une telle opération est également appelée ENQUEUe.
Diagramme schématique de la file d'attente
Lors de la mise en œuvre d'une file d'attente, vous devez prêter attention au phénomène de débordement faux. Comme indiqué dans la dernière image ci-dessus.
Faux débordement comme on le voit dans la figure
Solution: utilisez le stockage de la chaîne, ce qui peut évidemment. Lorsqu'il est stocké séquentiellement. Notre solution commune est de la connecter à la fin et de former une file d'attente circulaire. Cela utilise pleinement l'espace de stockage de la file d'attente.
Diagramme de file d'attente en boucle:
Dans l'image ci-dessus. Front pointe vers le premier élément de la file d'attente. L'arrière pointe vers la position suivante à la fin de la file d'attente.
Mais il y a encore un problème: lorsque l'avant et l'arrière pointent vers la même position, cela signifie-t-il que l'équipe est vide ou pleine? Vous pouvez imaginer une telle situation.
Les pratiques courantes pour résoudre ce problème sont la suivante:
Une marque est utilisée pour distinguer de telles situations déroutantes.
Sacrifiez un espace élémentaire. Lorsque l'avant et l'arrière sont égaux, ils sont vides. Lorsque la position suivante de l'arrière est avant. C'est plein.
Par exemple, la figure suivante:
Ci-dessous, nous donnons la file d'attente en boucle et utilisons une autre façon, c'est-à-dire, sacrifiant un espace d'élément pour distinguer les équipes vides et complètes.
Plusieurs points clés:
1. Front pointe vers la tête de l'équipe. L'arrière pointe vers la position suivante à la fin de l'équipe.
2. Inférence que l'équipe est vide: avant == arrière; Inférence que l'équipe est pleine: (arrière + 1)% maxsize == avant.
importer java.io. *; classe publique QueueArray {objet [] a; // Array d'objet, la file d'attente stocke jusqu'à A.Length-1 Object int Front; // à partir du premier indice Int arrière; // de l'indice final public queueArray () {this (10); // appelle d'autres constructeurs} public queueArray (int size) {a = nouvel objet [taille]; front = 0; arrière = 0; } / ** * Ajouter un objet à la fin de la file d'attente * @param obj objet * @return return false lorsque la file d'attente est pleine, sinon vrai * / public booléen enqueue (objet obj) {if ((arrière + 1)% a.length == front) {return false; } a [arrière] = obj; arrière = (arrière + 1)% a.legth; Retour Vrai; } / ** * Le premier objet dans la tête de la file d'attente est déqueulé * @return l'objet déquequé lorsque la file d'attente est vide * / objet public dequeue () {if (arrière == avant) {return null; } Objet obj = a [front]; Front = (Front + 1)% a.length; retour obj; } public static void main (String [] args) {queueArray q = new queueArray (4); System.out.println (q.enqueue ("Zhang San")); System.out.println (q.enqueue ("li si")); System.out.println (q.enqueue ("zhao wu")); System.out.println (q.enqueue ("wang yi")); // Impossible de saisir la file d'attente, la file d'attente est pleine pour (int i = 0; i <4; i ++) {System.out.println (q.dequeue ()); }}}Le résumé ci-dessus des deux méthodes d'implémentation des files d'attente circulaires basés sur les tableaux Java est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.