Académique Documents
Professionnel Documents
Culture Documents
Structures de données en C
Laila AMIR
Laila AMIR
Les listes simplement chaı̂nés
Plan
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
Outline
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
Définition
Une liste chaı̂née est un ensemble de cellules liées entre elles par des
pointeurs. Chaque cellule est une structure contenant les champs suivants
:
une ou plusieurs donnée (s)
un pointeur suivant sur la cellule suivante.
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
d1, d2,..,d5 représentent les données des cellules qui sont les liées par des
pointeurs suivant et le dernier pointeur suivant vaut NULL, ce qui indique
la fin de la liste.
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
Indications :
Utiliser la structure TypeCellule et la fonction InsereEnTete
Prototype : TypeCellule* construireListe()
N’oubliez pas l’initialisation -> liste vide (= NULL).
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
Parcours de liste
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
void Affichage(TypeCellule* L)
{
TypeCellule* p;
p= L;
while ( p != NULL)
{
printf(”%f”, p->donnee);
p= p-> suivant;
}
}
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
L’ajout d’une cellule en queue de la liste est plus compliqué que l’insertion
en tête de la liste. Elle nécessite un parcours de la liste pour rechercher
l’adresse du dernier élément.
Laila AMIR
Qu’est ce qu’une liste chaı̂née
Déclarer une liste simplement chaı̂née
Insertion en tête de liste
Les listes simplement chaı̂nés Construction d’une liste simplement chaı̂née
Parcours de liste
Insertion en queue d’une liste
libération de mémoire
libération de mémoire
Pour libérer la mémoire d’une liste chaı̂née, il faut détruire chacune des
cellules avec la fonction free.
void liberation(TypeCellule* List)
{
TypeCellule* p;
while (List !=NULL)
{
p=List;
List = List->suivant; //cellule suivante
free(p); //destruction de la cellule
}
List = NULL; //on réinitialise la liste à vide
}
Laila AMIR