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) :