2010-12-11 37 views
-1

Obtenir la valeur de l'élément dans la file d'attente avec la priorité la plus élevée devrait être préférée.Comment puis-je prioriser l'implémentation de la file d'attente en utilisant une file d'attente circulaire en C++?

+2

ce n'est pas une file d'attente par définition. Utilisez le tas à la place. – Drakosha

+0

Il y a une std :: priority_queue. – Puppy

+0

Semble avoir généré une certaine friction. Peut-être pourriez-vous ajouter un peu de contexte - combien de niveaux de priorité avez-vous? quel est le but le plus large, ou est-ce une question abstraite? Je suppose que vous voulez une file d'attente prioritaire de taille fixe? Cela peut aider certains commentateurs à répondre directement ... –

Répondre

0

Avez-vous besoin de plusieurs files d'attente, chacune avec des priorités différentes? Quel est le problème que vous essayez réellement de résoudre? L'idée d'une file d'attente est la suivante: il s'agit d'une file d'attente, et la priorité de la file d'attente est prioritaire, et vous ne devez parcourir la file d'attente qu'en la faisant disparaître. Implémenter une file d'attente prioritaire avec une autre file d'attente - circulaire ou non - n'est pas la chose la plus efficace à faire. Vous pouvez l'implémenter comme un tas ou un arbre à la place - il y a un certain nombre d'articles, dont un sur Wikipedia on priority queues.

+1

Oui, et une file d'attente prioritaire est différente http://en.wikipedia.org/wiki/Priority_queue – Falmarri

+0

Si nous parlons de plusieurs niveaux de priorité (1000 par exemple) alors les files d'attente multiples ne sont pas la meilleure solution. – Dialecticus

+0

@Falmarri - je ne sais pas si vous avez lu ou interprété ma réponse correctement. Faire une file d'attente prioritaire avec une autre file d'attente n'a aucun sens - pensez que vous avez manqué le point. –

0

Vous pouvez faire en sorte qu'une file d'attente prioritaire soit implémentée en tant que segment de mémoire binaire min. Les clés de chaque entrée peuvent représenter sa «priorité» et plus la clé est basse, plus elle a de priorité. Ainsi, la suppression de l'entrée racine renvoie l'entrée avec la priorité la plus élevée.