1
Université Mohammed V- Agdal
Ecole Mohammadia d'Ingénieurs
Département Génie Informatique
Structures de Données
Par: Mr N.EL FADDOULI
EMI/ Structures de Données / N. El Faddouli
Année Universitaire:2013/2014
Les Piles
Définition
-
Une
pile
est
une
liste
linéaire
d
'
éléments
(entiers
)
Une
pile
est
une
liste
linéaire
léments
(entiers
,…
)
où l'ajout et la suppression d'un élément se font
du même côté. Sommet
- Si la pile n'est pas vide, l'élément accessible est le
dernier ajouté et qui se trouve au sommet de la pile
Protocole LIFO: Last In First Out
:
Utilisation
de
la
pile
en
informatique
:
:
Utilisation
de
la
pile
en
informatique
:
Journalisation des mises à jour pour réaliser la
fonction “undo” (logiciels de bureautique p.e.)
Allocation de la mémoire pour les variables locales
EMI/ Structures de Données / N. El Faddouli 33
lors de l’exécution des procédures
2
Les Piles
- Les deux opérations principales sont:
Empiler: ajoute un élément au dessus du sommet de
la pile.
Dépiler: supprime l'élément au sommet de la pile
si elle n'est pas vide.
- D'autres opérations sont possibles :
InitPile : Cree une pile vide.
Sommet: Retourne l'élément au sommet de la pile
qui doit être non vide.
PileVide: Détermine si la
p
ile est vide ou non et
EMI/ Structures de Données / N. El Faddouli 34
p
retourne Vrai ou Faux.
Les Piles
Exemple d'utilisation de pile:
Inverser
une
chaîne
S
Inverser
une
chaîne
S
Algorithme:
P: Pile de caractères
NLongueur(S)
P
i
0
à
N
1
P
our
i
0
à
N
-
1
Empiler (S[i], P)
Pour i0àN-1
S[i] Sommet(P)
Depiler (P)
Implémentation statique avec un tableau:
- La pile est représentée par un enregistrement
contenant les champs suivants:
-L'indice du sommet de la pile: un entier
-Untableau des éléments de la pile.
- Ce tableau peut être statique (taille maximale fixée )
ou dynamique (réservation dynamique du tableau) .
EMI/ Structures de Données / N. El Faddouli 35
- Il faut faire un contrôle de taille lors de l'empilement
pour éviter un débordement
(la pile ne doit pas être pleine)
3
Les Piles
Implémentation statique avec un tableau:
1
Pile
avec
un
tableau
statique
:
Pile
d
'
entiers
1
-
Pile
avec
un
tableau
statique
:
Pile
dentiers
typedef struct
{int S;/* indice du sommet de la pile */
int T[100]; /* Tableau statique */
}
Pil
}
Pil
e;
Pile InitPile() { Pile P; P.S = -1; return P; }
int PileVide(Pile P) {if(P.S==-1) return 1;
else return 0; }
int PilePleine(Pile P) {if(P.S==99) return 1;
else return 0;}
int
Sommet(Pile
P
int
*)
{
if
(
!
PileVide(P)
)
int
Sommet(Pile
P
,
int
*
x
)
{
if
(
!
PileVide(P)
)
{*x = P.T[P.S]; return 1;}
else return 0;
}
EMI/ Structures de Données / N. El Faddouli 36
}
Il faut vérifier si la pile n'est pas vide avant de
dépiler ou prendre le sommet de la pile.
Les Piles
int Empiler (Pile *P, int X)
{
{
if (PilePleine(*P)) return 0;
else {(*P).S ++; /* */
(
*
P)
T
[
(
*
P)
S
]
=
X
;
/
**
/
P->S ++;
P
-
>T [ P
-
>S ] = X ;
(P)
.
T
[
(P)
.
S
]
=
X
;
/
/
return 1;
}
}
P
-
>T
[
P
-
>S
]
=
X
;
int Depiler (Pile *P)
{
if
(Pil Vid (
*
P))
t
0
if
(Pil
e
Vid
e
(
*
P))
re
t
urn
0
;
else {(*P).S -- ; /* P->S -- */
return 1;
EMI/ Structures de Données / N. El Faddouli 37
}
}
4
Les Files
Définition
Une
file
est
une
liste
linéaire
d
'
éléments
les
-
Une
file
est
une
liste
linéaire
léments
les
insertions se font d'un côté et les suppressions de
l'autre côté.
Enfiler
Défiler
Enfiler
Défiler
- Les noms spécifiques pour ces opérations sont
Enfiler pour insérer et Défiler pour supprimer.
- Les opérations sur les files sont syntaxiquement les
mêmes que sur les piles ; c'es
t
par leur effet qu'elles
diffèrent: l'élément supprimé est le premier arri
dans la file.
-
Une
file
se
comporte
comme
une
file
d
'
attente
;
EMI/ Structures de Données / N. El Faddouli 38
-
Une
file
se
comporte
comme
une
file
dattente
;
(suitleprotocoleFirst In First Out (FIFO))
- Exemple d'utilisation de file: Documents à imprimer, ...
Les Files
- Les opérations sur les files sont:
InitFile: Cree une file vide.
Tête : Retourne l'élément en tête de la file qui doit être
non vide.
Enfiler
:
Insère
un
élément
à
la
fin
de
la
file
Enfiler
:
Insère
un
élément
à
la
fin
de
la
file
.
Défiler: Supprime l'élément en tête de la file qui doit
être non vide.
FileVide: Teste si la file est vide et retourne vrai ou
faux
Implémentation statique par un tableau:
- Simplicité d'implémentation.
- Quand le nombre d'insertions est à priori limité.
-Tableau contenant les éléments de la file.
-Deux indices, représentant respectivement le début
t
l
fi
d
l
fil
EMI/ Structures de Données / N. El Faddouli 39
e
t
l
a
fi
n
d
e
l
a
fil
e.
- Opération supplémentaire: FilePleine qui détermine si
une file est pleine.
5
Les Files
- Implémentation en langage C:
typedef struct
{intN;/*Nombre maximal d'éléments*/
int T,Q;/*tête et queue de file*/
int
*
E
;
/
*
représente
les
éléments
de
la
file
*
/
int
E
;
/
représente
les
éléments
de
la
file
/
}File;
Version 1:
-
La
tête
T
de
la
file
ne
change
pas
(T
=
0
)
La
tête
T
de
la
file
ne
change
pas
(T
0
)
- La queue Q de la file contient l'indice
du dernier élément ajouté dans la file.
File InitFile (int a) /* file de aélément*/
{ File F ;
F.N = a ; /* Taille maximale de la file*/
F.T = 0;
F
Q
=
0
;
EMI/ Structures de Données / N. El Faddouli 40
F
.
Q
0
;
F.E = (int *) malloc( a* sizeof(int) );
return (F); }
Les Files
int FileVide( File F)
{
return
(
F
Q
==
0
)
;
}
{
return
(
F
.
Q
==
0
)
;
}
int Tete( File F)
{ return (F.E [ F.T ]);}
int FilePleine( File F)
{ return (F.Q == F.N);}
int Enfile
r
(
File *F
,
int a
)
(
,
)
{
if (FilePleine (*F)) return 0;
else
{
F->E [ F->Q ] = a;
{
(*F).E[ (*F).Q ]=a;
(*F).Q ++;
return 1;
}
F->Q ++;
EMI/ Structures de Données / N. El Faddouli 41
}
}
1 / 21 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !