comment trouver le nombre d'éléments dans une File d'attente Circulaire
comment puis-je trouver le nombre d'éléments dans une file d'attente circulaire?
|avant - arrière| ne marche pas toujours.
est-il un équation de savoir combien d'élément dans une file d'attente circulaire?
- Votre question n'est pas très claire. Quel est le problème avec la traversée de la file d'attente jusqu'à ce que vous obtenez en retour pour le début, en comptant les éléments que vous allez?
- quelle langue? la bibliothèque?
Vous devez vous connecter pour publier un commentaire.
en fait de la taille serait,
ou on peut aller pour une formule générique:
En supposant que vous êtes en utilisant un tableau de taille N pour la file d'attente de la mise en œuvre, puis la taille de la file d'attente serait
size= (N-front+rear) mod N
En supposant que vous la mettre en œuvre à l'aide d'un tableau avec la taille de l'
N
il y a donc des pointeurs pointant vers l'avant et à l'arrière. Utilisez la formule suivante:La réponse standard est de prendre deux itérateurs au début, incrémenter le premier, une fois, et la seconde à deux reprises.
Vérifiez pour voir si elles pointent vers le même objet. Ensuite, répétez jusqu'à celui qui est l'incrémentation de la deux fois, soit frappe le premier ou atteint la fin. à l'intérieur de cette boucle, utilisez le compteur pour obtenir la longueur de la CQuueeue
Pas d'éléments dans la file d'attente Circulaire est,
où
Cette formule de travailler à la fois pour la doublure et les files d'attente circulaires.
Aucune des formules de prendre en compte le vide (zéro) cas. Cela vous donnera le nombre d'octets disponibles dans la file d'attente:
votre file d'attente contiennent le même élément dans plus d'un endroit? si elle peut ensuite je ne pense pas que vous pouvez faire cela comme il n'y a aucun moyen de savoir la différence entre:
a->b->c
et
a->b->c->a->b->c
si elle ne peut pas contenir le même élément plusieurs fois, il suffit de regarder à travers la file d'attente jusqu'à ce que vous trouver un élément que vous avez déjà vu
si (Cqueue_front>Cqueue_rear)
cout<<" Le nombre d'éléments de file d'attente sont : "<
Quoi avez-vous besoin pour mettre en œuvre une circulaire de la file d'attente ?
Réponse: vous aurez besoin avant et à l'arrière des nœuds + liste des articles + count_items.
Bien sûr, il n'est mise en œuvre lorsque la file d'attente est finie, quand on parle de
l'allocation dynamique, il sera différent.
Prendre un coup d'oeil à un exemple en Langage C,
Cela permettra de vous assurer que le montant exact des articles sont actuellement dans la file d'attente.
Lorsque vous souhaitez insérer un élément à la file d'attente, vous aurez simplement incrémenter arrière et count_items, et lorsque vous voulez supprimer un élément de la file d'attente, il vous suffit de décrémenter arrière et count_items.