Les listes chaînées

Le but de cet exercice est de créer une librairie (.h et .c) contenant les fonctions suivantes.
On envisagera les deux cas suivants :
1. On dispose d'un pointeur de tête et d'un pointeur de queue sur les listes.
2. On ne dispose que d'un pointeur de tête.


Exercice 1
Ecrire un programme qui lit une suite d'entiers à la console et crée la liste chaînée corespondante dans les les deux cas suivants :
1. La liste doit traduire l'ordre de lecture des entiers
2. Les entiers doivent être rangés par ordre croissant (au fur et à mesure de la création de la liste)

Prototype : 1. int Creer(TChiffre ** PtrCourant,TChiffre ** PtrDebut);
                  2. int CreerOrdre(TChiffre ** PtrCourant,TChiffre ** PtrDebut);


Exercice 2
Ecrire une fonction qui prend pour argument une valeur x et rend l'adresse, dans une liste chaînée, du premier maillon portant la valeur x.

Prototype : TChiffre *Rechercher(TChiffre *PtrDebut,int NbCherche);


Exercice 3
Ecrire une fonction qui affiche tout les éléments d'une liste chaînée ordonnée.


Exercice 4
Ecrire une fonction qui concatène deux listes chaînées.

int Concatenation(TChiffre *Liste1,TChiffre *Liste2,TChiffre **NouvListe);


Exercice 5
Ecrire une fonction qui supprime le premier maillon contenant l'entier x dans une liste chaînée.


Exercice 6
Ecrire une fonction qui supprime tous les maillons contenant l'entier x dans une liste chaînée.


Exercice 7
Ecrire une fonction qui recopie une liste chaînée en conservant l'ordre des éléments.


Exercice 8
Ecrire une fonction qui recopie une liste chaînée en inversant l'ordre des éléments


Exercice 9
Ecrire une fonction qui ordonne une liste chaînée sans créer de maillon supplémentaire. On utilisera la méthode qui consite à charcher le plus petit élément, à le mettre devant, etc.


Exercice 10
Donner une version récursive des exercices 4 et 5.

 

Correction (seul les exercices 1 à 8 sont corrigés pour l'instant) :

ListeChainee.h

ListeChainee.c