Le tableau est une structure linéaire et peut être indexé directement, c'est-à-dire pour aller au i-ième élément, juste un[i]. Une liste chaînée est également une structure linéaire Pour obtenir le i-ème élément, il vous suffit d'utiliser un pointeur pour le parcourir i fois en arrière. Il semble que les listes chaînées soient plus gênantes et moins efficaces que les tableaux.
En pensant à certaines des différences subtiles entre ces similitudes, leurs véritables différences sont progressivement apparues : pourquoi l'efficacité des listes chaînées est-elle inférieure à celle des tableaux ? Commençons par l’initialisation des deux. Le tableau n'a pas besoin d'être initialisé car les éléments du tableau se trouvent dans la zone de pile de la mémoire et le système demande automatiquement de l'espace. Les éléments de nœud de la liste chaînée se trouvent dans la zone de tas de la mémoire et chaque élément doit demander manuellement de l'espace, comme malloc. En d’autres termes, les tableaux allouent la mémoire de manière statique, tandis que les listes chaînées allouent la mémoire de manière dynamique. Pourquoi utiliser des listes chaînées alors qu’elles sont si gênantes ? Les tableaux ne peuvent-ils pas remplacer complètement les listes chaînées ? Pour revenir à cette question, il suffit de penser à la manière dont nous avons réalisé le système de gestion des informations sur les étudiants. Pourquoi utiliser des listes chaînées à cette époque ? Parce que les opérations telles que l'insertion et la suppression dans le système de gestion des étudiants sont très flexibles, tandis que les tableaux ont une taille fixe et ne peuvent pas être insérés ou supprimés de manière flexible et efficace. Parce que les opérations sur le tas sont plus flexibles. Chaque fois que vous insérez un élément dans le tableau, vous devez déplacer les éléments existants, mais les éléments de la liste chaînée sont sur le tas, ce genre de problème n'est donc pas nécessaire.
Cela dit, les différences entre les tableaux et les listes chaînées sont résumées comme suit :
Les tableaux allouent la mémoire de manière statique et les listes chaînées allouent la mémoire de manière dynamique
Les tableaux sont continus en mémoire, les listes chaînées ne sont pas continues
Les éléments du tableau sont dans la zone de pile et les éléments de la liste chaînée sont dans la zone du tas ;
Tableau En utilisant le positionnement en indice, la complexité temporelle est O(1) et la complexité temporelle du positionnement des éléments dans la liste chaînée est O(n); 🎜>
La complexité temporelle de l'insertion ou de la suppression d'éléments dans le tableau est O(n) , la complexité temporelle de la liste chaînée est O(1).Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!