Support de Travaux Pratiques « Atelier Programmation 2 » - TP4 : Les Listes

Page 1 sur 3Lecteur de document UniversityLib

Support de Travaux Pratiques « Atelier Programmation 2 » - TP4 : Les Listes

Computer Science - Data Structures · lab

Voir tous les documents en programmation

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

Publicité

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

Publicité

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.

Publicité

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.

Publicité

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