Vous êtes sur la page 1sur 57

n 6 Structures de vue densemble Leon n.

1 Introduction etdonnes linaires : les piles

Structures de donnes

STRUCTURES DE DONNES
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

STRUCTURES DE DONNES LINAIRES:


LES PILES

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Plan de la leon
Programmation structure Le concept de pile Exemples de piles Implantation des piles
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Programmation structure

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Programmation structure
Besoin de structurer l'information
Retenir la relation logique qui existe entre les donnes

Traitement identique concernant une famille de problmes


Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Programmation structure
Besoin de structurer l'information Exemple
SDs permettant de mettre en attente des informations pour les rcuprer plus tard
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Une pile cest quoi ?
SD caractrise par un comportement particulier en ce qui concerne l'insertion et l'extraction des lments

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Dfinition
Un ensemble d'lments de mme type
Seul l'lment au sommet est visible
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Dfinition
Empilement
Sommet Dpilement Pile
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Mise en oeuvre
#define Max 100 enum boolean {false,true} typedef struct Elem {} element; struct pile { element vec [Max]; int sommet; } p;
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Initialiser une pile vide
raz()

Sommet

Pile
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Initialiser une pile vide
raz()

Sommet

Pile
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Initialiser une pile vide

void raz() { p.sommet = -1; return ; }


Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Indiquer si une pile est vide
empty()

Sommet

false

Pile
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Indiquer si une pile est vide
empty()

Sommet

true

Pile
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Indiquer si une pile est vide
boolean empty() { return ( if (p.sommet == -1) return true; else return false; }
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Rcuprer l'lment au sommet
pop(x)

Sommet Pile
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Rcuprer l'lment au sommet
pop(x)

Sommet Pile
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Rcuprer l'lment au sommet
element pop() { if( empty() == true ) { perror("Pile vide"); exit(1); } else { res = p.vec[p.sommet ]; p.sommet--; } return(res); }
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Ajouter un nouvel lment x
push(x)

Sommet

Pile
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Ajouter un nouvel lment x
push(x)

x x Sommet

Pile
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Le concept de pile
Ajouter un nouvel lment x
void push(element x) { if(p.sommet == Max-1) { perror("Pile pleine"); exit(2);} else { p.sommet++; p.vec[p.sommet ] = x; } return; }
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exemples dutilisation

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exemples dutilisation
Domaines
Les problmes qui suivent une stratgie LIFO : Last In First Out La premire information tre rcupre est celle qui a t mise en attente en dernier
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exemples dutilisation
Domaine d'utilisation
Compilation valuation d'expressions
arithmtiques, logiques,

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Excution d'une fonction


Objets crs chaque appel
Arguments passs par valeurs Variables locales

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Excution d'une fonction


Objets crs chaque appel float echanger(float a, b){ float x = a; a=b; b=x; return x; }
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Excution d'une fonction


Objets crs chaque appel int y =echanger(2.5,5.7);
? 5.7 2.5 ?
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

x b a y

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Excution d'une fonction


Objets dtruits chaque retour
Les derniers, en vue de retrouver les donnes l'tat o elles taient avant l'appel
2.5 2.5 5.7 ?
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

x b a y

2.5

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Mini diteur de texte

Effacement de caractres l'aide du caractre '# Destruction d'une ligne l'aide du caractre '@'
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Mini diteur de texte


Editeur
Tap mkd@copie##y fich1 fich2

Interprt
copy fich1 fich2
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

#include "pile.h" Pile dfinir ici void editeur() { char c; raz(); while( (c=getchar()) != \n) { switch ( c ) { case '#' : pop(); break; case '@' : raz(); break; default : push(c); Caractre } ordinaire } afficher() En ordre inverse }
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice 1

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Expressions avec parenthses
Problme
S'assurer que les parenthses ((et)), les crochets ([et]) et les accolades ({et}) sont correctement imbriqus
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Expressions avec parenthses
Problme

{x+(y-[a+b])*c-[(d+e)]}

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Expressions avec parenthses
Il y a autant de dlimiteurs ouvrants que fermants
Chaque dlimiteur fermant, d'un type donn, est prcd par un symbole du mme type qui l'ouvre
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Question
Pour quelle raison la rsolution de ce problme fait-elle appel l'utilisation d'une SD pile?

{x+(y-[a+b])*c-[(d+e)]}
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Stratgie LIFO
Le dernier dlimiteur ouvert est le premier fermer

{x+(y-[a+b])*c-[(d+e)]}
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Question
Etat de la pile aprs la lecture de la chane :

{x+(y-[a+b])*c-[(d+e)]}
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Etat de la pile

{x+(y-[a+b])*c-[(d+e)]}
[ ( {
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Pile

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Etat de la pile

{x+(y-[a+b])*c-[(d+e)]}
[ ( {
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

( [ {

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Etat de la pile

{x+(y-[a+b])*c-[(d+e)]}
( [ {
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

( [ {

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Etat de la pile

{x+(y-[a+b])*c-[(d+e)]}

[ {
Prof. A. EL FAKER

{
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice
Ecrire
Un programme qui examine la validit d'une expression mathmatique donne

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

switch(c){ case '(','[','{': correct := push(c); break; case ')',']','}': { o= pop(); switch(o){
// dlimiteur ouvrant, on l'empile

// dlimiteur fermant, on dpile

// Ouvrant et fermant sont de mme type case '(':

if(c!=')') correct=false; break; }

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

if ( empty() && correct ) { printf("\n Votre expression est valide\n"); } else { printf("\n Votre expression n'est pas valide\n"); }
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Exercice 2

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Imbrication des boucles


Imbrication des boucles dans un langage
DO 1 Instructions DO 2 Instructions END 2 DO 3 Instructions END END 1

Sans label

Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Imbrication des boucles


Le programme est constitu des expressions

DO END
Prof. A. EL FAKER

Label Label

Label identificateur valide ou blanc

ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Imbrication des boucles


Algorithme
DO 1 Instructions DO 2 Instructions END 2 DO 3 Instructions END END 1
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

lire chaque expression, l'afficher l'cran avec un message :


BOUCLE 1 OUVERTE BOUCLE 2 OUVERTE

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Imbrication des boucles


Algorithme Tant que (il y a une ligne lire) faire lire (ligne); afficher (ligne); instr:= le premier mot de la ligne; label:= le deuxime mot de la ligne; Si instr = 'DO' Alors Afficher un message appropri;

Stocke label quelque part !


Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Sinon Si instr='END' Alors Si label= '' Alors Afficher un message fermant la dernire boucle ouverte Sinon Afficher un message fermant toutes les boucles en remontant jusqu' la boucle label Finsi Sinon Afficher un message d'erreur Finsi Finsi Refaire
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Imbrication des boucles


Beaucoup d'imprcisions Stocke label quelque part !
O? Comment le retrouver et l'extraire?
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Imbrication des boucles


D'aprs l'analyse faite prcdemment
La dernire boucle ouverte est la premire fermer, montre qu'il est naturel d'utiliser une SD PILE
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

Imbrication des boucles


Donc
Stocke label quelque part !

push(PILE,label)
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles

Structures de donnes

STRUCTURES DE DONNES
Prof. A. EL FAKER
ENSIAS - UNIVERSITE MOHAMMED V SOUISSI

Vous aimerez peut-être aussi