Skip to content

Chapitre 5 : Listes chainées

Illustration

1 éléments contient :

  • 1 valeur

  • 1 pointeur vers un autre élément

NULL : liste vide


Definition

Une liste chainée représente une liste de valeurs. Chaque valleur rst écrite à côté de l’adresse de la prochaine valeur. Il faut une convention pour représenter une liste vide.


En C :

typedef struct _cel_t{
    int v; //valeur
    (struct _cel_t)* s; //adresse cellule suivante
} cellule_t;
struct _cel_t a;
a.v = 0;
struct _cel_t b;
a.s = &b;
cellule_t c; // struct _cel_t c;


#include<stdlib.h>
cellule_t* allouerCellule(int v, cellule_t* bs){
    cellule_t* r = (cellule_t*) malloc(sizeof * bs); //ou malloc(sizeof(cellule_t));
    if (r ==  NULL){
        exit(1);
    }
    (*r).v = v;
    (*r).s = bs; //ou r->s = bs;
    return r;
}


cellule_t* l = NULL;
l = allouerCellule(3,l);
l = allouerCellule(2,l);
l = allouerCellule(1,l);
afficherListe(l) ; //1 2 3 \n

typedef int entier[3]
entier.c; //int c[3]
void afficherListe(cellule_t* i){
    while (i !=NULL){
        printf("%d" ,(*i).v);
        i = i->s; //i = (*i).s;
    }
    printf("\n") ;
}

void libererListe((cellule_t*)* ini){
    if (*ini == NULL) return;
    libererListe(&(*ini)->s); //ou (&(*(*ini)).s);
    free(*ini);
    *ini = NULL;
}