Différence entre la liste des tableaux et la liste liée

Différence entre la liste des tableaux et la liste liée

Comment les données sont-elles stockées?

La liste des tableaux et la liste liée sont des termes courants en matière de stockage de données et de récupération. Bien qu'il existe de nombreux dispositifs de stockage, en fin de compte, ils dépendent du mécanisme de stockage. Ces deux mécanismes de stockage placent vos données dans les périphériques de stockage et les récupéreront en cas de besoin. Jetons un coup d'œil à la façon dont ils stockent les données dans leur mémoire. La liste des tableaux utilise un stockage séquentiel et les données sont stockées l'une après l'autre. C'est peut-être une forme de stockage plus simple - cela évite la confusion. Oui, nous pouvons récupérer l'élément ou les données suivant de l'emplacement de mémoire suivante de la liste des tableaux; Cependant, il est stocké à l'aide de pointeurs dans la liste liée. Ici, nous avons besoin de deux emplacements de mémoire pour le stockage - l'un pour les données, l'autre pour le pointeur. Un pointeur aborde l'emplacement de la mémoire des données suivantes. Nous pouvons facilement comprendre que la liste liée ne stocke jamais les données séquentiellement; il utilise plutôt un mécanisme de stockage aléatoire. Les pointeurs sont les éléments clés pour localiser les emplacements de données dans la mémoire.

Tableau dynamique et liste liée

Nous avons déjà discuté de la façon dont les deux mécanismes de stockage ont mis des données et nous pouvons donner un terme «tableau dynamique» pour le schéma de stockage interne de la liste des tableaux. Il met juste des pièces de données l'une après l'autre - d'où le nom - tandis que la liste liée utilise une liste interne à l'aide de pointeurs pour suivre l'élément suivant. Par conséquent, il utilise une liste liée interne, comme une liste unique ou doublement liée pour nous montrer les données suivantes.

Utilisation de la mémoire

Comme la liste des tableaux stocke uniquement les données réelles, nous avons besoin d'espace uniquement pour les données que nous stockons. Inversement, dans la liste liée, nous utilisons également des pointeurs. Par conséquent, deux emplacements de mémoire sont nécessaires, et nous pouvons dire que la liste liée consomme plus de mémoire que la liste des tableaux. Un côté avantageux de la liste liée est qu'il ne nécessite jamais de lieux de mémoire continue pour stocker nos données, par opposition à la liste des tableaux. Les pointeurs sont capables de maintenir la position du prochain emplacement de données, et nous pouvons même utiliser des créneaux de mémoire plus petits qui ne sont pas continus. En ce qui concerne l'utilisation de la mémoire, les pointeurs jouent le rôle principal dans la liste liée, tout comme leur efficacité.

Taille de la liste des tableaux initiaux et de la liste liée

Avec la liste des tableaux, même une liste vide nécessite une taille de 10, mais avec une liste liée, nous n'avons pas besoin d'un espace aussi énorme. Nous pouvons créer une liste liée vide avec une taille de 0. Plus tard, nous pouvons augmenter la taille au besoin.

Récupération des données

La récupération des données est plus simple dans la liste des tableaux car il stocke séquentiellement. Tout ce qu'il fait est d'identifier le premier emplacement de données; De là, l'emplacement suivant est accessible séquentiellement pour récupérer le reste. Il calcule comme la première position de données + 'n', où 'n' est l'ordre des données dans la liste des tableaux. La liste liée fait référence au pointeur initial pour trouver le premier emplacement de données, et à partir de là, il fait référence au pointeur associé à chaque données pour trouver le prochain emplacement de données. Le processus de récupération dépend principalement des pointeurs ici, et ils nous montrent effectivement le prochain emplacement de données.

Fin de données

La liste des tableaux utilise une valeur nulle pour marquer la fin des données, tandis que la liste liée utilise un pointeur nul à cet effet. Dès que le système reconnaît les données nuls, la liste des tableaux arrête la prochaine récupération de données. De la même manière, le pointeur nul empêche le système de passer à la prochaine récupération de données.

Traversée inversée

La liste liée nous permet de traverser les directions inverses à l'aide de Descendingiterator (). Cependant, nous n'avons pas une telle installation dans une liste de tableaux - la traversée inversée devient un problème ici.

Syntaxe

Regardons la syntaxe Java des deux mécanismes de stockage.

Création de la liste des tableaux:

List arraylistample = new ArrayList ();

Ajout d'objets à la liste des tableaux:

Échantillon d'arbores.ajouter («name1»);

Échantillon d'arbores.ajouter («name2»);

C'est à quoi ressemblera la liste des tableaux qui en résultera - [name1, name2].

Création de liste liée:

Liste LinkedListample = new LinkedList ();

Ajout d'objets à la liste liée:

LinkedlistSamp.ajouter («name3»);

LinkedlistSamp.ajouter («name4»);

C'est à quoi ressemblera la liste liée résultant - [name3, name4].

 Ce qui est mieux pour l'opération de get ou de recherche?

La liste des tableaux prend o (1) le temps d'exécuter toute recherche de données, tandis que la liste liée prend U O (n) pour le ne recherche de données. Par conséquent, une liste de tableaux utilise toujours un temps constant pour toute recherche de données, mais dans la liste liée, le temps pris dépend de la position des données. Par conséquent, les listes de tableaux sont toujours un meilleur choix pour les opérations de get ou de recherche.

Ce qui est mieux pour l'opération d'insertion ou d'addition?

La liste des tableaux et la liste liée prennent O (1) du temps pour l'ajout de données. Mais si le tableau est plein, la liste des tableaux prend un temps considérable pour le redimensionner et copier les éléments dans le plus récent. Dans un tel cas, la liste liée est le meilleur choix.

Ce qui est mieux pour l'opération de suppression?

L'opération de suppression prend presque le même temps dans la liste des tableaux et la liste liée. Dans la liste des tableaux, cette opération supprime les données puis déplace la position des données pour former le réseau plus récent - il faut o (n) temps. Dans la liste liée, cette opération traverse les données particulières et modifie les positions du pointeur pour former la liste la plus récente. Le temps pour la traversée et l'élimination est également O (n).

Lequel est plus vite?

Nous savons qu'une liste de tableaux utilise un tableau interne pour stocker les données réelles. Par conséquent, si des données sont supprimées, toutes les données à venir ont besoin d'un changement de mémoire. De toute évidence, cela nécessite beaucoup de temps et ralentit les choses. Un tel changement de mémoire n'est pas requis dans la liste liée, comme tout ce qu'il fait est de modifier l'emplacement du pointeur. Par conséquent, une liste liée est plus rapide qu'une liste de tableaux dans tout type de stockage de données. Cependant, cela dépend purement du type d'opération, je.e. Pour l'opération Get ou Recherche, la liste liée prend beaucoup plus de temps qu'une liste de tableaux. Lorsque nous regardons les performances globales, nous pouvons dire que la liste liée est plus rapide.

Quand utiliser une liste de tableaux et une liste liée?

Une liste de tableaux est la mieux adaptée aux exigences de données plus petites où la mémoire continue est disponible. Mais lorsque nous traitons avec d'énormes quantités de données, la disponibilité de la mémoire continue implémente les mécanismes de stockage des données, que ce soit petit ou énorme. Ensuite, décidez lequel choisir - la liste des tableaux ou la liste liée. Vous pouvez aller de l'avant avec une liste de tableaux lorsque vous avez juste besoin de stockage et de récupération des données. Mais une liste peut vous aider au-delà de cela en manipulant les données. Une fois que vous avez décidé de la fréquence à la manipulation des données, il est important de vérifier le type de récupération des données que vous effectuez habituellement. Lorsqu'il s'agit simplement ou de recherche, la liste des tableaux est le meilleur choix; Pour d'autres opérations telles que l'insertion ou la suppression, poursuivez la liste liée.

Examinons les différences de forme tabulaire.

S.Non Concepts Différences
Liste des tableaux Liste liée
1 Mode de stockage de données Utilise un stockage de données séquentiel Utilise le stockage de données non séquentiel
2 Schéma de stockage interne Maintient un tableau dynamique interne Maintient une liste liée
3 Utilisation de la mémoire Nécessite un espace mémoire uniquement pour les données Nécessite également un espace mémoire pour les données pour les pointeurs
4 Taille de la liste initiale A besoin d'espace pour au moins 10 articles N'a pas besoin d'espace et nous pouvons même créer une liste liée vide de taille 0.
5 Récupération des données Calcul comme la première position de données + 'n', où 'n' est l'ordre des données dans la liste des tableaux Traversion du premier ou du dernier jusqu'à ce que les données requises soient nécessaires
6 Fin de données Les valeurs nulles marquent la fin Le pointeur nul marque la fin
7 Traversée inversée Ne le permet pas Le permet à l'aide de Descendingiterator ()
8 Syntaxe de création de liste List arraylistample = new ArrayList ();

Liste LinkedListample = new LinkedList ();

9 Ajout d'objets Échantillon d'arbores.ajouter («name1»);

LinkedlistSamp.ajouter («name3»);

dix Obtenir ou rechercher Prend o (1) le temps et est meilleur en performance Prend o (n) le temps et les performances dépendent de la position des données
11 Insérer ou ajout Consomme o (1) le temps sauf lorsque le tableau est plein Consomme o (1) temps en toutes circonstances
12 Suppression ou retrait Prend o (n) temps Prend o (n) temps
13 Quand utiliser? Lorsqu'il y a beaucoup d'opérations de Get ou de recherche; La disponibilité de la mémoire doit être plus élevée même au début Lorsqu'il y a beaucoup d'opérations d'insertion ou de suppression, et que la disponibilité de la mémoire n'a pas besoin d'être continue