Comment mod est-il utilisé pour déterminer le début et la fin d'un tableau circulaire dans une file d'attente?Arrayes circulaires dans les files d'attente
Répondre
Eh bien, vous gardez généralement trace de l'index du premier élément et de la taille actuelle. Si la taille est égale à la taille du tableau, cela signifie que le tableau est plein. Enqueuing un nouvel élément, vous devez ensuite développer le tableau. Sinon, vous écrivez simplement à l'élément (start + size + 1) % array_size
.
Lorsque vous dequeue un élément, vous prenez l'élément à start
, remplacer par null pour permettre la collecte des ordures, décrémentez size
, et incrémenter start
, emballage à 0 si nécessaire.
Une alternative à garder une trace de start
et size
est de garder une trace de start
et next
- où next
est l'indice de l'élément suivant à en file d'attente. Vous repérez si le tableau est plein lorsque start == next
. Ensuite, la mise en file d'attente (lorsqu'elle n'est pas complète) nécessite uniquement que vous modifiiez next
, et dequeuing vous demande seulement de changer start
. Comme précédemment, vous devez envelopper lorsque vous augmentez ou décrémentez start
/next
.
Dans un tableau circulaire, l'arrière de la file d'attente est (front + number_of_elements_in_queue - 1) mod size_of_queue
et le recto de la file d'attente doit être suivi après chaque file d'attente.
Il peut être utile de jeter un coup d'œil à la fonction wrapIndex à la ligne 28 de this example. wrapIndex (head) est le début (voir ligne 93) et wrapIndex (tail) est la fin (voir ligne 76).
- 1. Dépendances circulaires dans les bibliothèques flex
- 2. Références circulaires
- 3. Comment éviter les notifications circulaires dans MVC dans Delphi?
- 4. Files d'attente dans Android
- 5. Doctrine - références circulaires
- 6. Éviter les dépendances circulaires dans XNA en utilisant Ninject 2.0
- 7. Évitez les références circulaires dans le modèle de domaine
- 8. Java Generics circulaires
- 9. VS2008 références circulaires (C#)
- 10. détection des objets circulaires
- 11. Gestion des dépendances circulaires dans OCaml
- 12. Traitement des données circulaires dans Oracle SQL
- 13. Création de références génériques circulaires
- 14. files d'attente de discussion pour les nuls
- 15. Comment faire basculer les files d'attente RabbitMQ?
- 16. Question de références circulaires iBatis
- 17. htc files: Pourquoi ne pas les utiliser?
- 18. MSMQ Obtenir toutes les files d'attente privées
- 19. Files d'attente de files d'attente et de travail multiples
- 20. Comment puis-je comparer les files d'attente dans cpp?
- 21. Glassfish - obtenir toutes les files d'attente dans une session
- 22. E-mail CRM n'apparaissant pas dans les files d'attente
- 23. C++ comment faire pour gérer les dépendances circulaires?
- 24. Les références circulaires entraînent-elles une fuite de mémoire?
- 25. Comment puis-je éviter les importations circulaires en Python?
- 26. Résolution de références circulaires pour les objets implémentant ISerializable
- 27. files d'attente systèmes
- 28. Question d'installation: "Program Files" ou "Program Files (x86)"?
- 29. svn files delete
- 30. JAVA - Bibliothèque JSON qui gère les réfractions circulaires
Vous semblez lié à museful un peu. Êtes-vous affilié avec? –