Structures de données linéaires
Les structures linéaires organisent les éléments en séquence, mais leur représentation et les opérations permises diffèrent.
Comparaison
Trouver un nœud ou une position interne est distinct de sa modification. Dire que « l’insertion dans une liste chaînée est en » suppose implicitement que le nœud ou le prédécesseur concerné est déjà disponible.
Règles de sélection
- Préférez un tableau dynamique pour les séquences générales et les tâches dominées par l’itération.
- Préférez les nœuds chaînés lorsque l’identité stable des nœuds et les raccordements locaux dominent.
- Exposez une pile ou une file lorsque l’accès restreint communique mieux un invariant algorithmique qu’une liste générale.
- Employez un tampon circulaire pour une file bornée au stockage prévisible.
En Python, list est un tableau dynamique de références d’objets ; collections.deque prend en charge efficacement les opérations aux deux extrémités.
Choisir selon la prochaine opération
Pour atteindre directement le centième élément, lisez les tableaux. Pour raccorder à côté d’un nœud déjà détenu par l’algorithme, lisez les listes chaînées : connaître une position numérique ne fournit pas ce nœud. Pour apparier le dernier délimiteur encore ouvert, utilisez une pile. Pour traiter les arrivées dans l’ordre, utilisez une file.
Ici, désigne le nombre d’éléments stockés ; déplacer un emplacement ou suivre un lien est supposé constant. Le coût amorti borne toute une séquence d’opérations, redimensionnements occasionnels compris ; ce n’est pas une moyenne sur des entrées aléatoires. Les lignes pile et file décrivent des interfaces, dont les coûts d’implémentation se lisent séparément. Ces comparaisons concernent des conteneurs séquentiels en mémoire, pas la livraison concurrente de messages ni l’indexation sur disque.