2
Travaux Dirig´ es d’algorithmique n o 6 Cours d’Informatique de Deuxi` eme Ann´ ee —L2.1— Listes chaˆ ın´ ees par pointeurs 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

Listes cha^ n ees par pointeurs - monge.univ-mlv.frmonge.univ-mlv.fr/~tolone/Prog2/td6.pdf · { Ecrire une fonction de nom AffListeInv qui a che, dans l’ordre inverse du cha^ nage,

Embed Size (px)

Citation preview

Travaux Diriges d’algorithmique no6Cours d’Informatique de Deuxieme Annee

—L2.1—

Listes chaınees par pointeurs

Definition de la structure :

Un element d’une liste chaınee, appele une cellule, contient les informations que l’onsouhaite manipuler et egalement l’adresse de la cellule suivante. Les definitions de typessuivantes mettent en œuvre la notion de “liste chaınee 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’interet de cette definition est qu’elle correspond a la definition mathematique, ainsi uneliste est :

- soit vide ;

- soit un element suivit d’un liste.

x Exercice 1. (Elements d’une liste)– Ecrire une fonction qui prend en argument une liste chaınee et retourne le nombre

d’elements qu’elle contient.– Ecrire une fonction de recherche d’un element dans une liste. La fonction renvoie

l’adresse de la cellule qui contient l’element s’il est present et NULL sinon.– Ecrire une fonction qui prend en argument une liste chaınee et retourne le nombre

d’elements differents qu’elle contient.– Donner la complexie des deux fonctions.

x Exercice 2. (Affichage d’une liste)– Ecrire une fonction de nom AffListe qui affiche les elements de la liste chaınee passee

en parametre. Vous donnerez une version iterative et une version recursive de cettefonction.

1

– Ecrire une fonction de nom AffListeInv qui affiche, dans l’ordre inverse du chaınage,les elements de la liste chaınee passee en parametre.Pour la liste chaınee donnee 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 tete de liste– Ecrire une fonction d’extraction de la cellule en tete de liste.– Ecrire une fonction qui inverse l’ordre du chaınage des cellules d’une liste.

x Exercice 4. (Liberation d’une liste)Ecrire une fonction LibereListe qui libere tout l’espace memoire occupe par une liste chaınee.

x Exercice 5. (Liste de mots)– Definir les types necessaires pour gerer des listes de mots.– Parmi les fonctions precedentes, qu’elles sont celles qui peuvent etre reutilisee sans

transformations.– Ecrire la fonction d’insertion sans repetition pour ce type.

2