Travaux Dirig´ es d’algorithmique n
o6
Cours d’Informatique de Deuxi` eme Ann´ ee
—L2.1—
Listes chaˆın´ ees par pointeurs
D´ efinition de la structure :
Un ´ el´ ement d’une liste chaˆın´ ee, appel´ e une cellule, contient les informations que l’on souhaite manipuler et ´ egalement l’adresse de la cellule suivante. Les d´ efinitions de types suivantes mettent en œuvre la notion de “liste chaˆın´ ee d’entiers” :
typedef struct cellule {
int Valeur; /* donnee stockee : un entier. */
struct cellule * Suivant; /* pointeur sur la cellule suivante. */
} Cellule; /* definition d’un nouveau type. */
typedef Cellule * Liste; /* definition d’un nouveau type. */
L’int´ erˆ et de cette d´ efinition est qu’elle correspond ` a la d´ efinition math´ ematique, ainsi une liste est :
- soit vide ;
- soit un ´ el´ ement suivit d’un liste.
x
Exercice 1. ( ´ El´ ements d’une liste)
– ´ Ecrire une fonction qui prend en argument une liste chaˆın´ ee et retourne le nombre d’´ el´ ements qu’elle contient.
– ´ Ecrire une fonction de recherche d’un ´ el´ ement dans une liste. La fonction renvoie l’adresse de la cellule qui contient l’´ el´ ement s’il est pr´ esent et NULL sinon.
– ´ Ecrire une fonction qui prend en argument une liste chaˆın´ ee et retourne le nombre d’´ el´ ements diff´ erents qu’elle contient.
– Donner la complexi´ e des deux fonctions.
x
Exercice 2. (Affichage d’une liste)
– ´ Ecrire une fonction de nom AffListe qui affiche les ´ el´ ements de la liste chaˆın´ ee pass´ ee en param` etre. Vous donnerez une version it´ erative et une version r´ ecursive de cette fonction.
1
– ´ Ecrire une fonction de nom AffListeInv qui affiche, dans l’ordre inverse du chaˆınage, les ´ el´ ements de la liste chaˆın´ ee pass´ ee en param` etre.
Pour la liste chaˆın´ ee donn´ ee auparavant, AffListe devra produire la sortie :
4 1 7 3et AffListeInv la sortie :
3 7 1 4.x
Exercice 3. (Miroir)
– ´ Ecrire une fonction d’insertion d’une cellule en tˆ ete de liste – ´ Ecrire une fonction d’extraction de la cellule en tˆ ete de liste.
– ´ Ecrire une fonction qui inverse l’ordre du chaˆınage des cellules d’une liste.
x
Exercice 4. (Lib´ eration d’une liste)
Ecrire une fonction ´ LibereListe qui lib` ere tout l’espace m´ emoire occup´ e par une liste chaˆın´ ee.
x