Vous êtes sur la page 1sur 72

Structures de données

linéaires

Structures de données linéaires Octobre 2014
1. Introduction Listes simples : définition Quelques caractéristiques Représentation en mémoire des listes 2. Quelques notions
  • 1. Introduction

Listes simples : définition

Quelques caractéristiques Représentation en mémoire des listes

  • 2. Quelques notions et rappels

Notion de module et type abstrait de données (TAD)

Les structures

1. Introduction Listes simples : définition Quelques caractéristiques Représentation en mémoire des listes 2. Quelques notions

La déclaration de types

1. Introduction Listes simples : définition Quelques caractéristiques Représentation en mémoire des listes 2. Quelques notions

Pointeurs de fonctions

->

1. Introduction Listes simples : définition Quelques caractéristiques Représentation en mémoire des listes 2. Quelques notions
3. Module de gestion des listes Ajout en tête de liste Ajout en fin de liste

3. Module de gestion des listes

3. Module de gestion des listes Ajout en tête de liste Ajout en fin de liste

Ajout en tête de liste

3. Module de gestion des listes Ajout en tête de liste Ajout en fin de liste

Ajout en fin de liste Les fonctions de parcours de liste

3. Module de gestion des listes Ajout en tête de liste Ajout en fin de liste

elementCourant() objetCourant() listerListe(Liste* li)

chercherUnObjet()

3. Module de gestion des listes Ajout en tête de liste Ajout en fin de liste

Retrait en tête de liste

3. Module de gestion des listes Ajout en tête de liste Ajout en fin de liste

Destruction de listes

4. Application : Liste de personnes

3. Module de gestion des listes Ajout en tête de liste Ajout en fin de liste

1. Introduction

1. Introduction Octobre 2014
Une liste est liste. constituant les éléments de la Les éléments sont chaînés entre eux et
Une liste est liste. constituant les éléments de la Les éléments sont chaînés entre eux et

Une liste est liste.

Une liste est liste. constituant les éléments de la Les éléments sont chaînés entre eux et

constituant les éléments de la

Les éléments sont chaînés entre eux et on peut facilement ajouter ou extraire un ou plusieurs éléments.

Une liste simple est une structure de données telle que chaque élément contient :

  • informations caractéristiques

Une liste est liste. constituant les éléments de la Les éléments sont chaînés entre eux et
Une liste est liste. constituant les éléments de la Les éléments sont chaînés entre eux et
  • pointeur vers un autre élément ou une marque de fin

Une liste est liste. constituant les éléments de la Les éléments sont chaînés entre eux et
Une liste est liste. constituant les éléments de la Les éléments sont chaînés entre eux et

Octobre 2014

Une liste est liste. constituant les éléments de la Les éléments sont chaînés entre eux et

6

Karim Yassine Sarah Amal toute la salle. Elle peut aussi représenter les informations dispersées en mémoire.
Karim Yassine Sarah Amal toute la salle. Elle peut aussi représenter les informations dispersées en mémoire.
Karim Yassine Sarah Amal toute la salle. Elle peut aussi représenter les informations dispersées en mémoire.
Karim Yassine Sarah Amal
Karim
Yassine
Sarah
Amal
Quelques caractéristiques par demande au système Les informations sur les autres éléments . Les listes permettent
Quelques caractéristiques par demande au système Les informations sur les autres éléments . Les listes permettent

Quelques caractéristiques

Quelques caractéristiques par demande au système Les informations sur les autres éléments . Les listes permettent
Quelques caractéristiques par demande au système Les informations sur les autres éléments . Les listes permettent

par demande au système

Les informations sur les autres éléments

Quelques caractéristiques par demande au système Les informations sur les autres éléments . Les listes permettent

.

Les listes permettent une gestion sans déplacement

Quelques caractéristiques par demande au système Les informations sur les autres éléments . Les listes permettent

-à-

Quelques caractéristiques par demande au système Les informations sur les autres éléments . Les listes permettent

Une gestion en tableau est difficile quand des éléments doivent être ajoutés ou retirés en milieu de tableau.

Si les éléments sont toujours ajoutés ou retirés en début ou en fin de liste, une structure en tableau peut être envisagée.

Octobre 2014

Quelques caractéristiques par demande au système Les informations sur les autres éléments . Les listes permettent

8

Karim Karim Sarah Amal Yassine Amal Yassine Sarah Octobre 2014
Karim Karim Sarah Amal Yassine Amal Yassine Sarah Octobre 2014
Karim Karim Sarah Amal Yassine Amal Yassine Sarah
Karim
Karim
Sarah
Amal
Yassine
Amal
Yassine
Sarah

Octobre 2014

Karim Karim Sarah Amal Yassine Amal Yassine Sarah Octobre 2014

9

Quelques remarques pas de limite à fixer. plus de souplesse on ne peut résoudre les problèmes
Quelques remarques pas de limite à fixer. plus de souplesse on ne peut résoudre les problèmes

Quelques remarques

pas de limite à fixer.
pas de limite à fixer.

plus de souplesse

Quelques remarques pas de limite à fixer. plus de souplesse on ne peut résoudre les problèmes

on ne peut résoudre les problèmes ayant de nombreuses valeurs, ou alors, il faut réallouer une zone plus grande et déplacer les informations.

Quelques remarques pas de limite à fixer. plus de souplesse on ne peut résoudre les problèmes

Si la limite est trop grande,

.
.

Octobre 2014

Quelques remarques pas de limite à fixer. plus de souplesse on ne peut résoudre les problèmes

10

2. Quelques notions et rappels

Octobre 2014

2. Quelques notions et rappels Octobre 2014

11

Un module est une unité constituée En algorithmique, un module est un ensemble de fonctions traitant

Un module est une unité constituée

Un module est une unité constituée En algorithmique, un module est un ensemble de fonctions traitant

En algorithmique, un module est un ensemble de fonctions traitant des données communes.

Les objets (constantes, variables, types, fonctions) déclarés dans la partie

interface

Un module est une unité constituée En algorithmique, un module est un ensemble de fonctions traitant

utilisables dans un autre

programme.

Il suffit de référencer le module pour avoir accès aux objets de sa partie interface.

Octobre 2014

Un module est une unité constituée En algorithmique, un module est un ensemble de fonctions traitant

12

Les déclarations de variables doivent être évitées au maximum . Mais on peut toujours définir une

Les déclarations de variables doivent être évitées au maximum.

Mais on peut toujours définir une variable locale au module à laquelle on accède ou

Les déclarations de variables doivent être évitées au maximum . Mais on peut toujours définir une

On parle alors module et seulement accessibles à travers un jeu de fonctions.

Les déclarations de variables doivent être évitées au maximum . Mais on peut toujours définir une
Les déclarations de variables doivent être évitées au maximum . Mais on peut toujours définir une

données.

Le module est pour lui un type abstrait de données (TAD).

Octobre 2014

Les déclarations de variables doivent être évitées au maximum . Mais on peut toujours définir une

13

En C, la partie interface est décrite dans un fichier à part module.h (par exemple) appelé

En C, la partie interface est décrite dans un fichier à part module.h (par exemple)

appelé

En C, la partie interface est décrite dans un fichier à part module.h (par exemple) appelé

-tête.

La partie données locales est mémorisée dans un autre fichier module.c qui référence la partie interface en incluant module.h.

De même, le programme utilisateur module.h, ce qui définit pour lui, la partie interface.

En C, la partie interface est décrite dans un fichier à part module.h (par exemple) appelé

en faisant une inclusion de

Cette notion de module est de compilation séparée.

En C, la partie interface est décrite dans un fichier à part module.h (par exemple) appelé

ou

Chaque unité de compilation

En C, la partie interface est décrite dans un fichier à part module.h (par exemple) appelé

-tête, le type et les

prototypes des fonctions définies dans une autre unité de compilation.

Octobre 2014

En C, la partie interface est décrite dans un fichier à part module.h (par exemple) appelé

14

Octobre 2014
Octobre 2014
Celle-ci définit un modèle de structure mais ne réserve pas de variables correspondant à cette structure.
Celle-ci définit un modèle de structure mais ne réserve pas de variables correspondant à cette structure.
Celle-ci définit un modèle de structure mais ne réserve pas de variables correspondant à cette structure.
Celle-ci définit un modèle de structure mais ne réserve pas de variables correspondant à cette structure.

Celle-ci définit un modèle de structure mais ne réserve pas de variables correspondant à cette structure.

Celle-ci définit un modèle de structure mais ne réserve pas de variables correspondant à cette structure.

enreg et il précise le nom et le type de chacun des champs constituant la structure (numero, qte et prix).

Celle-ci définit un modèle de structure mais ne réserve pas de variables correspondant à cette structure.
Une fois un tel modèle défini, nous pouvons déclarer des variables du type correspondant (souvent, nous
Une fois un tel modèle défini, nous pouvons déclarer des variables du type correspondant (souvent, nous
Une fois un tel modèle défini, nous pouvons déclarer des variables du type correspondant (souvent, nous

Une fois un tel modèle défini, nous pouvons déclarer des variables du type correspondant (souvent, nous parlerons de structure pour désigner une variable dont le type est un modèle de structure).

Par exemple :

Une fois un tel modèle défini, nous pouvons déclarer des variables du type correspondant (souvent, nous

réserve un emplacement nommé art1 « de type enreg » destiné à contenir deux entiers et un flottant.

Octobre 2014

Une fois un tel modèle défini, nous pouvons déclarer des variables du type correspondant (souvent, nous

17

regrouper la définition du modèle de structure et la déclaration du type des variables dans une

regrouper

la définition du modèle de structure et la déclaration du type des variables dans une seule instruction comme dans cet exemple :

regrouper la définition du modèle de structure et la déclaration du type des variables dans une
Dans ce dernier cas, il est même (enreg), à Octobre 2014 18
Dans ce dernier cas, il est même
(enreg), à
Octobre 2014
18
variable du type correspondant. structure de dans le modèle (le nom de modèle lui- Voici quelques

variable du type correspondant.

structure de dans le modèle (le nom de modèle lui-
structure de
dans le modèle (le nom de modèle lui-

Voici quelques exemples :

variable du type correspondant. structure de dans le modèle (le nom de modèle lui- Voici quelques

Octobre 2014

variable du type correspondant. structure de dans le modèle (le nom de modèle lui- Voici quelques

19

typedef La déclaration typedef types synonymes . des signifie que entier est synonyme de int ,
typedef La déclaration typedef types synonymes . des signifie que entier est synonyme de int ,
typedef La déclaration typedef types synonymes . des signifie que entier est synonyme de int ,

typedef

La déclaration typedef types synonymes.

typedef La déclaration typedef types synonymes . des signifie que entier est synonyme de int ,

des

typedef La déclaration typedef types synonymes . des signifie que entier est synonyme de int ,
typedef La déclaration typedef types synonymes . des signifie que entier est synonyme de int ,

signifie que entier est synonyme de int , de sorte que les déclarations suivantes sont équivalentes :

typedef La déclaration typedef types synonymes . des signifie que entier est synonyme de int ,

Octobre 2014

typedef La déclaration typedef types synonymes . des signifie que entier est synonyme de int ,

20

typedef Octobre 2014
typedef Octobre 2014
typedef Octobre 2014

typedef

typedef Octobre 2014

Octobre 2014

typedef Octobre 2014

21

Octobre 2014
avant appel fct : 1 1.25000e+01 dans fct : 0 1.00000e+00 au retour dans main :
avant appel fct : 1 1.25000e+01 dans fct : 0 1.00000e+00 au retour dans main :

avant appel fct :

1

1.25000e+01

dans fct

:

0

1.00000e+00

au retour dans main :

1

1.25000e+01

Naturellement, les valeurs de la structure x sont recopiées localement dans la fonction fct lors de son appel ; les modifications de s au sein de fct incidence sur les valeurs de x.

avant appel fct : 1 1.25000e+01 dans fct : 0 1.00000e+00 au retour dans main :

Octobre 2014

avant appel fct : 1 1.25000e+01 dans fct : 0 1.00000e+00 au retour dans main :

23

-> Cherchons à modifier notre précédent programme pour que la fonction fct fct devra donc se
-> Cherchons à modifier notre précédent programme pour que la fonction fct fct devra donc se

->

Cherchons à modifier notre précédent programme pour que la fonction fct

-> Cherchons à modifier notre précédent programme pour que la fonction fct fct devra donc se
-> Cherchons à modifier notre précédent programme pour que la fonction fct fct devra donc se

fct devra donc se présenter sous la forme :

-> Cherchons à modifier notre précédent programme pour que la fonction fct fct devra donc se

Cela signifie que son en-tête sera de la forme :

-> Cherchons à modifier notre précédent programme pour que la fonction fct fct devra donc se
-> Le problème ads. fct , à chacun des « . » ne convient plus ,
-> Le problème ads.
->
Le problème
ads.

fct, à chacun des

« . » ne convient plus, car il suppose comme premier opérande un nom de structure et non une adresse

-> Le problème ads. fct , à chacun des « . » ne convient plus ,
-> Le problème ads. fct , à chacun des « . » ne convient plus ,
-> Le problème ads. fct , à chacun des « . » ne convient plus ,

adopter une notation telle que (*ads).a ou (*ads).b pour désigner les champs

-> Le problème ads. fct , à chacun des « . » ne convient plus ,

ads ;

faire appel à un nouvel opérateur noté ->
faire appel à un nouvel opérateur noté ->

la notation ads -> b désignera le second champ en argument ; elle sera équivalente à (*ads).b.

de la structure reçue

Octobre 2014

-> Le problème ads. fct , à chacun des « . » ne convient plus ,

25

Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
La fonction calculer() accepte un premier paramètre de type pointeur de fonction ayant deux entiers en
La fonction calculer() accepte un premier paramètre de type pointeur de fonction ayant deux entiers en

La fonction calculer() accepte un premier paramètre de type pointeur de fonction ayant deux entiers en paramètre et délivrant un entier :

La fonction calculer() accepte un premier paramètre de type pointeur de fonction ayant deux entiers en

Octobre 2014

La fonction calculer() accepte un premier paramètre de type pointeur de fonction ayant deux entiers en

27

Octobre 2014

Octobre 2014

Octobre 2014

28

3. Module de gestion des listes

Octobre 2014

3. Module de gestion des listes Octobre 2014

29

Un élément de liste contient toujours un pointeur une marque Les autres caractéristiques dépendent Pour que
Un élément de liste contient toujours un pointeur une marque Les autres caractéristiques dépendent Pour que

Un élément de liste contient toujours un pointeur une marque

Un élément de liste contient toujours un pointeur une marque Les autres caractéristiques dépendent Pour que
Un élément de liste contient toujours un pointeur une marque Les autres caractéristiques dépendent Pour que

Les autres caractéristiques dépendent

Un élément de liste contient toujours un pointeur une marque Les autres caractéristiques dépendent Pour que

Pour que le module de gestion des listes soit le plus général possible, il faut bien séparer ce qui est spécifique des listes de ce qui est caractéristique des applications.

Les informations sont regroupées dans une structure (des objets) et repérées par un pointeur de type Objet* (soit void*) appelé référence. Cette référence peut

Un élément de liste contient toujours un pointeur une marque Les autres caractéristiques dépendent Pour que

Octobre 2014

Un élément de liste contient toujours un pointeur une marque Les autres caractéristiques dépendent Pour que

30

Octobre 2014
Octobre 2014
La liste peut être représentée par un pointeur sur le premier élément de la liste. On
La liste peut être représentée par un pointeur sur le premier élément de la liste. On

La liste peut être représentée par un pointeur sur le premier élément de la liste.

On peut aussi regrouper quelques caractéristiques de la liste dans une structure de type tête de liste qui contient par exemple :

un pointeur sur le premier élément

un pointeur sur le premier élément

un pointeur sur le dernier élément

un pointeur sur le dernier élément

Un pointeur courant pour faciliter le parcours des listes

Un pointeur courant pour faciliter le parcours des listes

un pointeur sur le premier élément un pointeur sur le dernier élément Un pointeur courant pour
un pointeur sur le premier élément un pointeur sur le dernier élément Un pointeur courant pour
un pointeur sur le premier élément un pointeur sur le dernier élément Un pointeur courant pour
un pointeur sur le premier élément un pointeur sur le dernier élément Un pointeur courant pour

Octobre 2014

La liste peut être représentée par un pointeur sur le premier élément de la liste. On

32

Octobre 2014

Octobre 2014

Octobre 2014

33

Deux fonctions , peuvent compléter cette structure de type Liste, dépendant des objets traités et permettant
Deux fonctions , peuvent compléter cette structure de type Liste, dépendant des objets traités et permettant

Deux fonctions, peuvent compléter cette structure de type Liste, dépendant des objets traités et permettant :

  • de fournir la chaîne de caractères à écrire pour chaque objet

  • de comparer deux objets.

La fonction de comparaison fournit 0 si les deux objets sont égaux, une valeur inférieure à 0 si le premier objet est inférieur au deuxième, et une valeur supérieure à 0 sinon.

Ces deux fonctions sont des paramètres de la liste

Deux fonctions , peuvent compléter cette structure de type Liste, dépendant des objets traités et permettant
Deux fonctions , peuvent compléter cette structure de type Liste, dépendant des objets traités et permettant

Octobre 2014

Deux fonctions , peuvent compléter cette structure de type Liste, dépendant des objets traités et permettant

34

Octobre 2014

Octobre 2014

Octobre 2014

35

Fonctions offertes par défaut Octobre 2014
Fonctions offertes par défaut Octobre 2014

Fonctions offertes par défaut

Fonctions offertes par défaut Octobre 2014

Octobre 2014

Fonctions offertes par défaut Octobre 2014

36

a ni premier, ni dernier, ni élément courant. La de la liste pointée par li est

a ni premier, ni dernier, ni élément courant.

La

a ni premier, ni dernier, ni élément courant. La de la liste pointée par li est

de la liste pointée par li est donnée ci-dessous.

li oblique / représente NULL sur la figure.

a ni premier, ni dernier, ni élément courant. La de la liste pointée par li est

; li est donc de type Liste*. La barre

li ->premier indique le champ premier de la structure pointée par li.

a ni premier, ni dernier, ni élément courant. La de la liste pointée par li est

Octobre 2014

a ni premier, ni dernier, ni élément courant. La de la liste pointée par li est

37

Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014

Octobre 2014

Octobre 2014

40

Ajout en tête de liste Insertion de objet en tête de la liste li de type
Ajout en tête de liste Insertion de objet en tête de la liste li de type

Ajout en tête de liste

Ajout en tête de liste Insertion de objet en tête de la liste li de type

Insertion de objet en tête de la liste li de type 0 (non ordonnée). Après insertion, la liste contient 3 éléments.

Octobre 2014

Ajout en tête de liste Insertion de objet en tête de la liste li de type

41

Ajout en tête de liste Octobre 2014
Ajout en tête de liste Octobre 2014

Ajout en tête de liste

Ajout en tête de liste Octobre 2014

Octobre 2014

Ajout en tête de liste Octobre 2014

42

Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Ajout en fin de liste en tête de liste si la liste est vide ou après
Ajout en fin de liste en tête de liste si la liste est vide ou après

Ajout en fin de liste

Ajout en fin de liste en tête de liste si la liste est vide ou après
  • en tête de liste si la liste est vide

  • ou après le dernier élément si la liste contient déjà un élément.

La fonction précédente peut donc être utilisée pour définir cette fonction.

Ajout en fin de liste en tête de liste si la liste est vide ou après

Octobre 2014

Ajout en fin de liste en tête de liste si la liste est vide ou après

45

liste en faisant abstraction des structures de données sous-jacentes . suivant début fin de la liste.

liste en faisant abstraction des structures de données sous-jacentes.

suivant
suivant

début

liste en faisant abstraction des structures de données sous-jacentes . suivant début fin de la liste.

fin de la liste.

aux champs de la structure de la tête de liste (premier, dernier, courant), ni au champ suivant des éléments.

liste en faisant abstraction des structures de données sous-jacentes . suivant début fin de la liste.

Octobre 2014

liste en faisant abstraction des structures de données sous-jacentes . suivant début fin de la liste.

46

ouvrirListe() et La fonction ouvrirListe() permet de se positionner sur le premier élément de la liste
ouvrirListe() et La fonction ouvrirListe() permet de se positionner sur le premier élément de la liste

ouvrirListe() et

ouvrirListe() et La fonction ouvrirListe() permet de se positionner sur le premier élément de la liste

La fonction ouvrirListe() permet de se positionner sur le premier élément de la liste li.

ouvrirListe() et La fonction ouvrirListe() permet de se positionner sur le premier élément de la liste

La fonction booléenne préalablement par ouvrirListe().

indique si on a atteint la fin de la liste li ouverte

Octobre 2014

ouvrirListe() et La fonction ouvrirListe() permet de se positionner sur le premier élément de la liste

47

elementCourant() La fonction locale elementCourant() la liste li Octobre 2014
elementCourant() La fonction locale elementCourant() la liste li Octobre 2014

elementCourant()

La fonction locale elementCourant() la liste li

elementCourant() La fonction locale elementCourant() la liste li Octobre 2014
elementCourant() La fonction locale elementCourant() la liste li Octobre 2014

Octobre 2014

elementCourant() La fonction locale elementCourant() la liste li Octobre 2014

48

objetCourant() La fonction objetCourant() li . Octobre 2014
objetCourant() La fonction objetCourant() li . Octobre 2014

objetCourant()

La fonction objetCourant()
La fonction objetCourant()

li.

objetCourant() La fonction objetCourant() li . Octobre 2014
objetCourant() La fonction objetCourant() li . Octobre 2014
listerListe(Liste* li) La fonction listerListe(Liste* li) effectue un parcours complet de la liste en appliquant la
listerListe(Liste* li) La fonction listerListe(Liste* li) effectue un parcours complet de la liste en appliquant la

listerListe(Liste* li)

La fonction listerListe(Liste* li) effectue un parcours complet de la liste en appliquant la fonction toString()

listerListe(Liste* li) La fonction listerListe(Liste* li) effectue un parcours complet de la liste en appliquant la
listerListe(Liste* li) La fonction listerListe(Liste* li) effectue un parcours complet de la liste en appliquant la

Octobre 2014

listerListe(Liste* li) La fonction listerListe(Liste* li) effectue un parcours complet de la liste en appliquant la

50

chercherUnObjet() la fonction chercherUnObjet() Octobre 2014
chercherUnObjet() la fonction chercherUnObjet() Octobre 2014

chercherUnObjet()

la fonction chercherUnObjet()
la fonction chercherUnObjet()
chercherUnObjet() la fonction chercherUnObjet() Octobre 2014

Octobre 2014

chercherUnObjet() la fonction chercherUnObjet() Octobre 2014

51

Retrait en tête de liste li , et de fournir un pointeur Octobre 2014
Retrait en tête de liste li , et de fournir un pointeur Octobre 2014

Retrait en tête de liste

Retrait en tête de liste li , et de fournir un pointeur Octobre 2014

li, et de fournir un pointeur

Retrait en tête de liste li , et de fournir un pointeur Octobre 2014

Octobre 2014

Retrait en tête de liste li , et de fournir un pointeur Octobre 2014

52

Retrait en tête de liste Octobre 2014
Retrait en tête de liste Octobre 2014

Retrait en tête de liste

Retrait en tête de liste Octobre 2014

Octobre 2014

Retrait en tête de liste Octobre 2014

53

avoir un pointeur sur
avoir un pointeur sur

Si precedent

avoir un pointeur sur Si precedent Si on extrait le dernier élément de la liste, il

Si on extrait le dernier élément de la liste, il faut modifier le pointeur sur le dernier qui pointe, après extraction, sur precedent.

avoir un pointeur sur Si precedent Si on extrait le dernier élément de la liste, il

détruit, ou réinséré dans une autre liste).

Octobre 2014

avoir un pointeur sur Si precedent Si on extrait le dernier élément de la liste, il

54

Octobre 2014
Octobre 2014
Octobre 2014

Octobre 2014

Octobre 2014

56

Octobre 2014
Pour détruire une liste, il faut effectuer un parcours de liste avec destruction de chaque élément.
Pour détruire une liste, il faut effectuer un parcours de liste avec destruction de chaque élément.

Pour détruire une liste, il faut effectuer un parcours de liste avec destruction de chaque élément.

Octobre 2014

Pour détruire une liste, il faut effectuer un parcours de liste avec destruction de chaque élément.

58

Application :

liste de personnes

Application : liste de personnes Octobre 2014
gérer une liste de personnes départs et arrivées de personnes. volatile problème simplement sans réservation inutile
gérer une liste de personnes départs et arrivées de personnes. volatile problème simplement sans réservation inutile

gérer une liste de personnes

départs et arrivées de personnes.

gérer une liste de personnes départs et arrivées de personnes. volatile problème simplement sans réservation inutile

volatile problème simplement sans réservation inutile

gérer une liste de personnes départs et arrivées de personnes. volatile problème simplement sans réservation inutile
gérer une liste de personnes départs et arrivées de personnes. volatile problème simplement sans réservation inutile
gérer une liste de personnes départs et arrivées de personnes. volatile problème simplement sans réservation inutile

-tête liste.h Liste et les prototypes des fonctions.

gérer une liste de personnes départs et arrivées de personnes. volatile problème simplement sans réservation inutile

Le type Personne définit une structure (un objet) comportant un nom et un prénom.

gérer une liste de personnes départs et arrivées de personnes. volatile problème simplement sans réservation inutile

deux personnes.

Octobre 2014

gérer une liste de personnes départs et arrivées de personnes. volatile problème simplement sans réservation inutile

60

liste.c liste.h #include "liste.h" personne.h personne.c #include "personne.h" listePersonne.c Octobre 2014

liste.c

 
 
liste.h
liste.h
liste.c liste.h #include "liste.h" personne.h personne.c #include "personne.h" listePersonne.c Octobre 2014

#include "liste.h"

personne.h

 
 
 

personne.c

 
 
liste.c liste.h #include "liste.h" personne.h personne.c #include "personne.h" listePersonne.c Octobre 2014

#include "personne.h"

listePersonne.c

 
 

Octobre 2014

liste.c liste.h #include "liste.h" personne.h personne.c #include "personne.h" listePersonne.c Octobre 2014

61

Octobre 2014
Octobre 2014
Octobre 2014

Octobre 2014

Octobre 2014

62

Octobre 2014
Octobre 2014
Octobre 2014

Octobre 2014

Octobre 2014

64

le programme suivant permet : la destruction de la liste Octobre 2014
le programme suivant permet : la destruction de la liste Octobre 2014

le programme suivant permet :

la destruction de la liste
la destruction de la liste
la destruction de la liste
la destruction de la liste
la destruction de la liste
la destruction de la liste
la destruction de la liste
la destruction de la liste
la destruction de la liste

la destruction de la liste

la destruction de la liste
la destruction de la liste
le programme suivant permet : la destruction de la liste Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014
Octobre 2014

Octobre 2014

Octobre 2014

67

Octobre 2014

Octobre 2014

Octobre 2014

68

Octobre 2014

Octobre 2014

Octobre 2014

69

Octobre 2014
Octobre 2014
Octobre 2014

Octobre 2014

Octobre 2014

71

Octobre 2014
Octobre 2014
Octobre 2014