Différences entre les tableaux et les listes chaînées

Anonim

Les tableaux sont la structure de données la plus utilisée pour stocker la collection d'éléments. La plupart des langages de programmation fournissent des méthodes pour déclarer facilement des tableaux et des éléments d'accès dans les tableaux. La liste liée, plus précisément la liste à liaison unique, est également une structure de données qui peut être utilisée pour stocker la collection d'éléments. Il est composé d'une séquence de nœuds et chaque nœud a une référence au nœud suivant dans la séquence.

Représenté dans la figure 1, est un morceau de code généralement utilisé pour déclarer et affecter des valeurs à un tableau. La figure 2 illustre l'apparence d'un tableau dans la mémoire.

Le code ci-dessus définit un tableau qui peut stocker 5 entiers et auquel on accède en utilisant les indices 0 à 4. Une propriété importante d'un tableau est que le tableau entier est alloué comme un seul bloc de mémoire et chaque élément obtient son propre espace dans le tableau. Une fois qu'un tableau est défini, sa taille est fixe. Donc, si vous n'êtes pas sûr de la taille du tableau au moment de la compilation, vous devez définir un tableau suffisamment grand pour être du côté sécuritaire. Mais, la plupart du temps, nous allons utiliser moins d'éléments que nous n'en avons alloué. Donc, une quantité considérable de mémoire est réellement gaspillée. D'un autre côté, si le «tableau suffisamment grand» n'est pas suffisamment grand, le programme se bloque.

Une liste liée alloue de la mémoire à ses éléments séparément dans son propre bloc de mémoire et la structure globale est obtenue en liant ces éléments comme des liens dans une chaîne. Chaque élément d'une liste chaînée possède deux champs, comme indiqué sur la figure 3. Le champ de données contient les données réelles stockées et le champ suivant contient la référence à l'élément suivant de la chaîne. Le premier élément de la liste liée est stocké en tant que tête de la liste chaînée.

->suivant
Figure 3: Elément d'une liste liée La figure 4 représente une liste chaînée avec trois éléments. Chaque élément stocke ses données et tous les éléments sauf le dernier stockent une référence à l'élément suivant. Le dernier élément contient une valeur nulle dans son prochain champ. Tout élément de la liste peut être consulté en commençant par la tête et en suivant le pointeur suivant jusqu'à ce que vous rencontriez l'élément requis.

Même si les tableaux et les listes liées sont similaires dans le sens où ils sont tous les deux utilisés pour stocker la collection d'éléments, ils engendrent des différences dues aux stratégies qu'ils utilisent pour allouer de la mémoire à leurs éléments. Les tableaux allouent la mémoire à tous ses éléments en tant que bloc unique et la taille du tableau doit être déterminée au moment de l'exécution. Cela rendrait les tableaux inefficaces dans les situations où vous ne connaissez pas la taille du tableau au moment de la compilation. Comme une liste liée alloue de la mémoire à ses éléments séparément, elle serait beaucoup plus efficace dans les situations où vous ne connaissez pas la taille de la liste au moment de la compilation.La déclaration et l'accès aux éléments dans une liste liée ne seraient pas simples par rapport à la façon dont vous accédez directement aux éléments d'un tableau à l'aide de ses indices.