Académique Documents
Professionnel Documents
Culture Documents
Programmation Imprative I
Rim Chaabane rchaabane@ai.univ-paris8.fr
- Cours 9 -
@10
12 :20
@10
Duroc
@200
0
12 :32
@200
Dufour
13 :05
NULL
Les piles
Les files
- Cours 9 -
3.2.
3.3.
3.4.
- Cours 9 -
Une pile
La pile est une structure de donnes, qui permet de stocker les donnes dans lordre LIFO (Last
In First Out = Dernier Entr Premier Sorti). Linsertion des donnes se fait donc toujours au
dbut de la liste (i.e. par le haut de la pile), donc le premier lment de la liste est le dernier
lment insr, sa position est donc en haut de la pile.
Dernier entr
Premier sorti
Pour permettre les oprations sur la pile, nous allons sauvegarder certains lments Le premier
lment de la pile, qui se trouve en haut de la pile, va nous permettre de raliser l'opration de
rcupration des donnes situes en haut de la pile.
Pour raliser cela, une autre structure sera utilise (ce n'est pas obligatoire, des variables peuvent
tre utilises). Voici sa composition :
typedef struct pile {
Element *debut;
int taille;
};
typefed struct pile Pile ;
Une file
La File diffre de la Pile dans sa faon de grer les donnes. En effet, la file permet de stocker les
donnes dans lordre FIFO (First In First Out = Premier Entr Premier Sorti). Linsertion des
donnes se fait aussi par en haut de la File, mais la sortie ne se faut plus par le haut comme pour
la Pile mais par le bas.
Premier entr
- Cours 9 -
Premier sorti
Pour manipuler une File, nous sauvegardons son premier lment, son dernier lment ainsi que
sa taille (nombre dlments quelle contient).
Pour raliser cela, une autre structure sera utilise (ce n'est pas obligatoire, des variables peuvent
tre utilises). Voici sa composition :
typedef struct file{
Element *debut;
Element *fin;
int taille;
};
typefed struct file File ;
Dans la suite du chapitre nous ne traiterons que le cas dune liste simplement chaine.
4. Dclaration dune liste simplement chaine
Dans lexemple de la liste des patients, nous auront les dclarations suivantes :
typdef char ch15 [16] ;
typedef element * PElement;
typedef struct element {
ch15 Nom;
int age;
PElement * Suivant;
} Element;
- Cours 9 -
Le pointeur Courant ici permet de se dplacer dans la liste, mais il nest pas ncessaire, une
variable du mme type pourra jouer ce rle.
5. Initialisation dune liste
/* Liste vide */
Liste L;
L->Premier = NULL;
L->Dernier = NULL;
L->taille = 0 ;
Pour savoir si une liste est vide, il suffit de vrifier si son premier lment vaut NULL.
6. Insrer un lment dans une liste vide
tapes :
premier
Dupond
- Cours 9 -
dernier
45
NULL
En tte de liste :
premier
Machin
Dupond
suivant
34
suivant
45
dernier
Duroc
Dufour
suivant
30
15
NULL
Les flches rouges indiquent les pointeurs modifier pour insrer un lment en tte
de liste.
-
Dans la liste :
L
Dupond
45
premier
suivant
Duroc
dernier
30
Dufour
suivant
Machin
34
15
NULL
suivant
Les flches rouges indiquent ici lensemble des pointeurs modifier pour insrer un
lment dans la liste.
- Cours 9 -
En fin de liste :
premier
dernier
Machin
Dupond
45
suivant
Duroc
30
suivant
Dufour
34
NULL
suivant
15
Les flches rouges indiquent ici aussi les pointeurs modifier pour pouvoir insrer
un lment la fin de la liste.