Programme

Pages: 7 (1551 mots) Publié le: 14 novembre 2012
Cours 11 : Les listes chaînées

En conception :

Les listes chaînées sont des structures de données à accès indirect. Elles permettent de construire une suite d’éléments de même type ou plus rarement de types différents. L’ avantage des listes est le fait qu’elles sont dynamiques d’une part. En effet, on réserve la mémoire pour chaque maillon de la chaîne, donc si la taille de la listevarie beaucoup on prends moi de ressource inutilement.

Le deuxième avantage est le fait que l’on peut facilement ajouter des éléments au milieu de la liste. Dans un tableau, il faut d’abord déplacer les éléments du tableau pour faire un « trou ». De même, on peut facilement enlever des éléments dans une listes.

On utilise le même principe que les listes pour plusieurs structures de donnéescomplexes. Vous le ferez d’ailleurs en « Structure des données », le cours de programmation suivant.

Dans le cadre du cours, il n’y a pas plus d’information à avoir sur les listes chaînées. Autant pour ce qui est du choix que de l’implantation. Vous n’aurez qu’à développer des habiletés à créer et utiliser les listes. Cependant vous devrez devenir expert en cela.

En code :

Toutel’idée consiste à définir une structure ayant un ou plusieurs pointeurs. En jouant avec ces pointeurs, on arrive à faire une chaîne : le premier élément pointe le second, le second pointe de troisième, etc.

Soit une structure (en C) définit comme ceci :

-------------------------------------------------
#include <stdlib.h>
--------------------------------------------------------------------------------------------------
struct StructChaine
-------------------------------------------------
{
-------------------------------------------------
int y;
-------------------------------------------------
int x;
-------------------------------------------------
StructChaine* Suivant;
-------------------------------------------------
};-------------------------------------------------

-------------------------------------------------
int main ()
-------------------------------------------------
{
-------------------------------------------------
StructChaine* Debut = NULL ;
-------------------------------------------------

-------------------------------------------------
// on construit la chaine
--------------------------------------------------------------------------------------------------
return 0;
-------------------------------------------------
}

On pourrait avoir une chaîne qui ressemblerait avec cette structure à ceci.

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0 | NULL | | y4 | x5 | Suivant17 | | | | | |
1 | | | | | | | | y8 | x3 | Suivant41 |
2 | | | | | y7 | x3 | Suivant55 | | | |
3| Chaine24 | | | | | | | | | |
4 | | y9 | x4 | SuivantNULL | | | | | | |
5 | | | | | | y1 | x0 | Suivant02 | | |

Voilà qui fait un beau « spaghetti ». Pour des raisons de lisibilité et parce que ça change rien, on représente les listes chaînées en les mettant dans l’ordre logique et on n’identifie pas les adresses mémoire. On retrouverait par exemple pour la mêmeliste :

Ajouter :

Maintenant, le problème est comment arriver à construire une telle liste à partir de code en C. La première chose à comprendre est que l’on ne construit pas une telle liste d’un seul coup. On commence par mettre un éléments dans la liste, puis on en ajoute un autre puis un autre.
On commence donc avec une liste qui ressemble à :

Pour arriver à cela, il suffit de sedéfinir un pointeur du type de notre structure, ici Chaine. Ensuite, on l’initialise à NULL. La raison est que l’on veut pouvoir facilement se rendre compte que l’éléments est le dernier. Deux pointeurs pourraient être utilisés : NULL et l’adresse de Chaine. On utilise NULL parce que l’on veut faire une ligne et non un cycle.

Ensuite, il suffit de réserver un espace mémoire et de jouer...
Lire le document complet

Veuillez vous inscrire pour avoir accès au document.

Vous pouvez également trouver ces documents utiles

  • Programme C++
  • Programmer en c
  • Programme
  • programme ses
  • Programme
  • Programme
  • Programme
  • programme

Devenez membre d'Etudier

Inscrivez-vous
c'est gratuit !