Les Piles & Les Files

FST
Page 1 sur 22Lecteur de document UniversityLib

Les Piles & Les Files

FST · Computer Science - Data Structures · notes

Voir tous les documents en programmation

Les Piles & Les Files

Sana Hamdi

Assistante en Informatique à ISSAT Mateur

Avril 2015

Plan

1 Objectifs

2 Rappels

3 Abstraction

4 Type abstrait de données PILE

Sana HAMDI (ISSAT-M)

1/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Plan

1 Objectifs

2 Rappels

3 Abstraction

4 Type abstrait de données PILE

Sana HAMDI (ISSAT-M)

1/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Objectifs

(cid:136) Structure de données : Piles

(cid:73) Primitives de manipulation des Piles

(cid:73) Deux implémentations

Contiguë par tableau

Chaˆınée par pointeur

(cid:136) Structure de données : Files

(cid:73) Primitives de manipulation des Piles

(cid:73) Deux implémentations

Contiguë par tableau

Chaˆınée par pointeur

Sana HAMDI (ISSAT-M)

2/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Plan

1 Objectifs

2 Rappels

3 Abstraction

4 Type abstrait de données PILE

Sana HAMDI (ISSAT-M)

2/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Rappels

(cid:136) Structure dynamique = structure dont la taille (Nombre de composants) peut

varier en cours d’exécution

(cid:73) Deux sortes de structures :

Les structure non-récursives : les fichiers

Les structures récursives : liste, pile, file

(cid:136) Structure récursive = définition comportant une référence à elle même

(cid:73) Une seule référence : structure linéaire

(cid:73) Plusieurs références : structure non-linéaire

(cid:73) Les références se font à l’aide de pointeurs

Sana HAMDI (ISSAT-M)

3/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Plan

1 Objectifs

2 Rappels

3 Abstraction

4 Type abstrait de données PILE

Sana HAMDI (ISSAT-M)

3/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Abstraction

(cid:136) Lorsqu’on utilise une structure de données, l’important est de connaˆıtre les

opérations que l’on peut effectuer sur les données

(cid:73) la façon dont les opérations sont programmées n’a pas d’intérêts pour

l’utilisateur

(cid:136) Un type abstrait de données est une description d’une structure de données

Publicité

comprenant :

(cid:73) type de données qu’on peut mettre en mémoire

(cid:73) description des opérations possibles sur ces données

(cid:73) conditions d’erreurs associées aux opérations

Sana HAMDI (ISSAT-M)

4/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Plan

1 Objectifs

2 Rappels

3 Abstraction

4 Type abstrait de données PILE

Sana HAMDI (ISSAT-M)

4/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Les Piles

(cid:136) Garde en mémoire des objets arbitraires

(cid:136) Les insertions et suppressions se font dans l’ordre ”dernier arrivé, premier

servi”

(cid:136) Principales opérations :

(cid:73) empiler(objet) insère un objet sur la pile

(cid:73) dépiler():objet retire et retourne l’objet en haut de la pile

Sana HAMDI (ISSAT-M)

5/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Les Piles

(cid:136) Garde en mémoire des objets arbitraires

(cid:136) Les insertions et suppressions se font dans l’ordre ”dernier arrivé, premier

servi”

(cid:136) Principales opérations :

(cid:73) empiler(objet) insère un objet sur la pile

(cid:73) dépiler():objet retire et retourne l’objet en haut de la pile

(cid:136) opérations auxiliaires :

(cid:73) sommet():objet retourne l’objet en haut de la pile sans le retirer

(cid:73) taille():entier retourne le nombre d’objets de la pile

(cid:73) pileVide():booléen indique si la pile est vide ou non

(cid:73) pilePleine():booléen indique si la pile est pleine ou non (cas contiguë)

(cid:136) 2 implémentations

(cid:73) Représentation contiguë

(cid:73) Représentation chaˆınée

Sana HAMDI (ISSAT-M)

6/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Piles en représentation contiguë : tableaux

Type Élément = . . . //dépend du problème

Type Tab = tableau [1 à MAX] de Élément

Type

Structure Pile

corps : Tab

taille : Entier //nombre d’élément

finStructure Pile

procédure créerPile (var p : Pile)

p.taille ← 0

Fin Procédure

Sana HAMDI (ISSAT-M)

7/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Piles en représentation contiguë : tableaux

Fonction pileVide (p : Pile) : Booléen

pileVide ← (p.taille = 0)

Fin Fonction

Fonction pilePleine (p : Pile) : Booléen

pilePleine ← (p.taille = Max)

Fin Fonction

Fonction sommet (p : Pile) : Élément

Si pileVide (p) Alors

Erreur

Sinon

retourner p.corps[p.taille]

Fin Si

Fin Fonction

Sana HAMDI (ISSAT-M)

8/ 16

Publicité

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Piles en représentation contiguë : tableaux

Procédure empiler (e : Élément, var p:Pile)

Si (p.taille < MAX) Alors

p.taille ← p.taille + 1

p.corps[p.taille] ← e

Sinon

Erreur //possibilité de ré-allocation du tableau

Fin Si

Fin Procédure

Fonction dépiler (var p :Pile): Element

Si pileVide (p) Alors Erreur

Sinon

p.taille ← p.taille - 1

dépiler ← p.corps[p.taille]

Fin Si

Fin Procédure

Sana HAMDI (ISSAT-M)

9/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Piles en représentation chaˆınée : listes chaˆınées

Type Élément = . . . //dépend du problème

Type PtrM = Maillon *

Type

Structure Maillon

valeur : Élément

next : PtrM

finStructure Maillon

procédure créerPile (var Pile : PtrM)

Pile ← Nil

Fin Procédure

Fonction pileVide (Pile : PtrM) : Booléen

pileVide ← (Pile = Nil)

Fin Fonction

Sana HAMDI (ISSAT-M)

10/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Piles en représentation chaˆınée : listes chaˆınées

Fonction taille (Pile : PtrM) : entier

Variables

p : PtrM

n : entier

Début

p ← Pile

n ← 0

Si pileVide(Pile) = Faux Alors

n ← 1

Tant que *p.next (cid:54)= Nil Faire

n ← n + 1

p ← *p.next

Fin Tant que

Fin Si

taille ← (n)

Fin Fonction

Sana HAMDI (ISSAT-M)

11/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Piles en représentation chaˆınée : listes chaˆınées

Fonction Recherche (Pile : PtrM, pos : entier) : PtrM

Variables

p : PtrM, n : entier

Début

p ← Pile ; pred ← Nil ;n ← 0

Si pileVide (p) Alors Recherche ← Nil

Sinon

Tant que *p.next (cid:54)= Nil et n (cid:54)= pos Faire

n ← n + 1

pred ← p

p ← *p.next

Fin Tant que

Si p = Nil Alors Recherche ← Nil

Sinon Recherche ← Pred

Fin Si

Fin Si

Fin Fonction

Sana HAMDI (ISSAT-M)

12/ 16

Publicité

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Piles en représentation chaˆınée : listes chaˆınées

Fonction ValSommet (Pile : PtrM) : Élément

Variables

p : PtrM

Début

Si pileVide(Pile) Alors

Erreur

Sinon

p ← Recherche (Pile, taille(Pile))

ValSommet ← *p.valeur

Fin Si

Fin Fonction

Sana HAMDI (ISSAT-M)

13/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Piles en représentation chaˆınée : listes chaˆınées

Procédure Empiler (var Pile : PtrM, x : Élément)

Variables

pt : PtrM

Début

p ← réserver(tailleDe(Maillon))

*p.valeur ← x

*p.next ← Nil

Si Pile = Nil Alors

Pile ← p

Sinon

pt ← Recherche (Pile, taille(Pile))

*pt.next ← p

Fin Si

Fin Procédure

Sana HAMDI (ISSAT-M)

14/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Piles en représentation chaˆınée : listes chaˆınées

Procédure Dépiler (var Pile : PtrM)

Variables

p, pred : PtrM

Début

Si pileVide(Pile) Alors Erreur

Sinon

pred ← Recherche (Pile, taille(Pile)-1)

Si pred = Nil Alors

p ← Pile

Pile ← Nil

Sinon

p ← *pred.next

*pred.next ← Nil

Fin Si

Libérer(p)

Fin Si

Fin Procédure

Sana HAMDI (ISSAT-M)

15/ 16

Objectifs

Rappels

Abstraction

Type abstrait de données PILE

Application

Remplissage d’une zone d’une image

Une image en informatique peut être représentée par une matrice de points

”Image” ayant M colonnes et N lignes. Un élément Image[x, y] de la matrice

représente la couleur du point p de coordonnées (x, y). On propose d’écrire ici une

fonction qui, à partir d’un point p, étale une couleur c autour de ce point. La

progression de la couleur étalée s’arrête quand elle rencontre une couleur autre que

celle du point p. La figure suivante illustre cet exemple, en considérant p = (3, 4).

Pour effectuer le remplissage, on doit aller dans toutes les directions à partir du

point p. Ceci ressemble au parcours d’un arbre avec les noeuds de quatre fils. La

procédure suivante permet de résoudre le problème en utilisant une pile.

Sana HAMDI (ISSAT-M)

16/ 16

Merci pour votre attention !

Sana Hamdi

Assistante en Informatique à ISSAT Mateur

Membre du Laboratoire LIPAH (FST-Tunisie) et

du Laboratoire SAMOVAR (Télécom SudParis-France)

Sana HAMDI (ISSAT-M)

16/ 16