web-dev-qa-db-fra.com

Piles et files d'attente basées sur un tableau ou sur une liste

J'essaie de comparer les taux de croissance (à la fois au moment de l'exécution et à l'espace) pour les opérations de pile et de file d'attente lorsqu'il est mis en œuvre à la fois en tant que tableaux et en tant que listes chaînées. Jusqu'à présent, je n'ai pu trouver que les temps d'exécution moyens des requêtes pour pop()s de file d'attente, mais rien qui explore en profondeur ces deux structures de données et compare leurs comportements de durée d'exécution/espace.

Plus précisément, je cherche à comparer Push() et pop() à la fois pour les files d'attente et les piles, implémentées sous la forme both arrays et listes chaînées (donc 2 opérations x 2 structures x 2 implémentations, ou 8 valeurs).

De plus, j'apprécierais les meilleures, les moyennes et les pires valeurs pour ces deux valeurs, ainsi que tout ce qui concerne la quantité d'espace qu'elles consomment.

La chose la plus proche que j'ai pu trouver est ce pdf "mère de toutes les feuilles de triche" qui est clairement une feuille de triche pour maîtres ou doctorats d'algorithmes avancés et de fonctions discrètes.

Je cherche juste un moyen de déterminer quand et où je devrais utiliser une implémentation basée sur un tableau par rapport à une implémentation basée sur une liste pour les piles et les files d'attente.

42
IAmYourFaja

Désolé si j'ai mal compris votre question, mais si je ne l’ai pas fait, je pense que c’est la réponse que vous recherchez.

Avec un vecteur, vous pouvez uniquement ajouter/supprimer efficacement des éléments à la fin du conteneur . Avec un deque, vous pouvez efficacement ajouter/supprimer des éléments au début/à la fin du conteneur . peut efficacement insérer/supprimer des éléments n'importe où dans le conteneur.

les vecteurs/deque autorisent les itérateurs à accès aléatoires .. Les listes ne permettent qu'un accès séquentiel.

La façon dont vous devez utiliser et stocker les données est celle qui vous convient le mieux.

MODIFIER:

Il y a beaucoup plus à cela, ma réponse est très généralisée. Je peux aller plus en profondeur si je suis même au courant de votre question.

0
user898058