Support de travaux pratiques « Atelier programmation 2 »
TP4 : Les listes
Ce TP à pour but de manipuler des programmes traitant les listes.
Objectifs Spécifiques
•
•
des éléments dans la liste
•
ou son rang
•
Créer la structure de données constituant l’élément de la liste
Développer des programmes C qui insèrent (en tête, à la fin, à une position donnée)
Développer des programmes C qui recherchent un élément de la liste, selon sa valeur
Développer des programmes C qui suppriment un élément de la liste
Pré-requis
•
•
Advertisement
•
Atelier programmation 1
Les enregistrements
Les pointeurs
Volume horaire
• 3 Heures
Sami AMARA AU 2011 – 2012
Support de travaux pratiques « Atelier programmation 2 »
TP4 : Les listes
Déclaration du prototype d’un élément de la liste
Un élément de la liste contient un champ dataet un pointeur next vers l’élément suivant.
struct noeud{ type_donnee data; struct noeud *element_suivant; }; typedef
struct noeud *Type_Liste;
Remarque :
La déclaration du prototype d’un élément de la liste doit être effectuée au début du programme et
avant le bloc main().
Déclaration d’une variable de type Liste
Advertisement
Type_Liste L ;
Ceci consiste à déclarer un pointeur L de type liste chaînée (Type_Liste)
Accès à un élément de la liste
Pour accéder au champ data ou au champ next, il suffit d’utiliser les opérateurs " -> ":
Nom_Variable_Liste -> Nom_Champ
Allocation de mémoire
Chaque nouvel élément inséré dans la liste nécessite une réservation de l’espace mémoire et ce en
utilisant la fonction, déclarée dans le chapitre pointeur, malloc.
(Type_Liste)malloc(sizeof(struct noeud));
Exemple :
Sami AMARA AU 2010 – 2011
Support de travaux pratiques « Atelier programmation 2 »
TP4 : Les listes
Donner la structure de données permettant de définir un élément d’une liste chaînée,
1
sachant que cet élément est totalement défini par sa valeur de type entier et un lien vers
l’élément suivant. Ce lien est de type élément.
Advertisement
2
3
4
pour montrer la manipulation des listes chaînées.
Écrire une procédure afficheListe permettant d’afficher une liste.
Ecrire une procédure ajouterEnTete permettant d’ajouter un élément en tête de la liste.
Ecrire le programme principal dans lequel vous permutez entre l’ajout et l’affichage
Nous restons dans les conditions de l’exercice précédent, vous écrivez une procédure
1
permettant d’ajouter un élément en fin de la liste.
2
des éléments dans les deux cas : en tête et à la fin de la liste.
Vous permutez les appels des deux procédures d’ajout des éléments pour tester l’ajout
Ecrire un programme permettant de construire une liste selon une méthode interactive avec
l’utilisateur. Il faut donc écrire le code de deux fonctions d’insertion dans une liste, une pour
insérer en tête de la liste et une autre pour l’insertion à la fin de la liste. Puis, il faut permuter
l’appel aux fonctions selon le choix de l’utilisateur.
Advertisement
On définit un type de liste chaînée de mots par
typedef struct maillon { int *info;
struct cellule *suivant; } maillon;
typedef maillon *liste;
Ecrivez une fonction lectureList permettant de créer une liste de maillons en
1
interaction avec l’utilisateur, en recopiant chaque fois un entier donnée dans le champ info
du maillon.
2
3
élément de type entier, retourne l'adresse du premier maillon de la liste dont le champ info
contient l’entier donné, et le pointeur nul si la liste ne contient pas de tel maillon
Ecrire une fonction permettant d’afficher le contenu de la liste.
Ecrivez une fonction position qui, étant donnée une liste de type liste et un
Sami AMARA AU 2010 – 2011