2017-05-28 3 views
0

J'ai quelques questions sur les idées proposées dans this video.listes chaînées dans la pratique

L'orateur montre un tableau qui contient des valeurs et des pointeurs, et il montre aussi une liste chaînée « libre » séparée, qui est mis à jour chaque fois qu'un élément est ajouté/supprimé.

Pourquoi sont-ils utilisés? N'utilise-t-on pas un tableau/en vous limitant à un ensemble de noeuds libres pour vaincre le but d'une liste chaînée?

L'utilisation d'une liste liée ne permet-elle pas de parcourir des données fragmentées? Pourquoi utiliser ces nœuds libres, lorsque vous pouvez allouer de manière dynamique le stockage?

Pourquoi?

La structure proposée, pour moi, ne semble pas du tout dynamique, et est en fait un tableau compliqué et inefficace.

+1

Pouvez-vous inclure des captures d'écran ou des citations pertinentes de la vidéo? Passer 10 minutes à regarder une vidéo est un peu trop long pour espérer comprendre pleinement la question (sans parler de la nécessité de visiter des ressources hors site, ce qui peut poser problème pour diverses raisons). – Dukeling

+0

Plutôt spéculatif sans contexte complet, mais si vous utilisez un tableau (qui pourrait être simplement de la RAM) sous la forme d'une liste chaînée (avec des éléments à des positions arbitraires), vous pouvez efficacement supprimer et insérer des éléments dans O (1) à tout index (si vous avez une référence au nœud concerné). Vous ne pouvez pas faire cela avec un tableau normal. – Dukeling

Répondre

0

L'approche que vous mentionnez est logique dans certains cas d'utilisation. Par exemple, si le scénario courant est que le tableau est plein à 90% et qu'il passe la plupart du temps à l'itérer, vous pouvez très rapidement faire une boucle sur un tableau et simplement ignorer les quelques éléments vides. Cela peut être beaucoup, beaucoup plus rapide que la "poursuite de pointeur" que les listes simples liées utilisent, parce que le préfetcher matériel du CPU peut prédire la mémoire dont vous aurez besoin à l'avance.

Et comparé à un tableau simple et non libre, il a l'avantage de l'allocation O (1) d'un élément dans un emplacement vide.