C : LISTES CHAÎNÉES Une liste chaınée est une mani`ere d

Transcription

C : LISTES CHAÎNÉES Une liste chaınée est une mani`ere d
C : LISTES CHAÎNÉES
Une liste chaı̂née est une manière d’encoder une suite de valeurs, plus souple qu’un simple tableau.
Elle se présente sous la forme de maillons. Chaque maillon contient une valeur (ou plus), ainsi
qu’un pointeur vers le maillon suivant. La liste elle-même est le pointeur vers le premier maillon.
a
c
b
NULL
Exercice 1. Création.
(1) Implémenter une structure de liste chaı̂née, dont les valeurs sont des caractères. On
utilisera typedef pour simplifier l’écriture par la suite.
(2) Écrire une fonction qui crée (malloc) un maillon de la liste selon une valeur et un pointeur
donnés en entrée.
(3) Écrire une fonction qui libère (free) toute une liste chaı̂née.
(4) Écrire une fonction qui prend en entrée une chaı̂ne de caractères (de type char*), et
renvoie une liste chaı̂née de caractère, l’ordre important peu.
(5) Même question, cette fois-ci on veut conserver l’ordre.
Pour aider à voir ce qui se passe, il pourra être utile d’écrire une fonction qui affiche la liste.
Exercice 2. Fonctions utiles.
Implémenter les fonctions suivantes :
(1) une fonction qui cherche un caractère dans une liste, et renvoie la première sous-liste qui
commence par ce caractère;
(2) une fonction qui concatène deux listes;
(3) une fonction qui renverse une liste.
Exercice 3. Tri par insertion.
Une méthode simple de trier une liste est le tri par insertion : on prend chaque élément un par
un, et on l’insère au bon endroit dans la liste qu’on a déjà traitée. La relation d’ordre usuelle ’<’
marche bien sur les caractères.
(1) Écrire une fonction qui insère un élément (char) dans une liste, juste avant le premier
élément plus grand.
(2) Écrire l’algorithme de tri par insertion, qui prend en entrée une chaı̂ne de charactères et
renvoie une liste chaı̂née triée. Quelle est sa complexité ?
Exercice 4. Dans un joli paquet.
Modulariser votre fichier pour en faire une librairie ; ne pas oublier d’écrire le fichier header (du
genre listechainee.h) associé. Vérifier que tout marche, en appelant les fonctions depuis un
autre fichier.
1

Documents pareils