Lec 06_Piles

Download Lec 06_Piles

Post on 25-Jul-2015

23 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

<p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>STRUCTURES DE DONNESProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>STRUCTURES DE DONNES LINAIRES:LES PILES</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Plan de la leon Programmation structure Le concept de pile Exemples de piles Implantation des pilesProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Programmation structure</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Programmation structureBesoin de structurer l'informationRetenir la relation logique qui existe entre les donnes</p> <p>Traitement identique concernant une famille de problmesProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Programmation structureBesoin de structurer l'information ExempleSDs permettant de mettre en attente des informations pour les rcuprer plus tardProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pile</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileUne pile cest quoi ?SD caractrise par un comportement particulier en ce qui concerne l'insertion et l'extraction des lments</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileDfinitionUn ensemble d'lments de mme typeSeul l'lment au sommet est visibleProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileDfinitionEmpilementSommet Dpilement PileProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileMise en oeuvre#define Max 100 enum boolean {false,true} typedef struct Elem {} element; struct pile { element vec [Max]; int sommet; } p;Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileInitialiser une pile videraz()</p> <p>Sommet</p> <p>PileProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileInitialiser une pile videraz()</p> <p>Sommet</p> <p>PileProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileInitialiser une pile vide</p> <p>void raz() { p.sommet = -1; return ; }Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileIndiquer si une pile est videempty()</p> <p>Sommet</p> <p>false</p> <p>PileProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileIndiquer si une pile est videempty()</p> <p>Sommet</p> <p>true</p> <p>PileProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileIndiquer si une pile est videboolean empty() { return ( if (p.sommet == -1) return true; else return false; }Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileRcuprer l'lment au sommetpop(x)</p> <p>Sommet PileProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileRcuprer l'lment au sommetpop(x)</p> <p>Sommet PileProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileRcuprer l'lment au sommetelement pop() { if( empty() == true ) { perror("Pile vide"); exit(1); } else { res = p.vec[p.sommet ]; p.sommet--; } return(res); }Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileAjouter un nouvel lment xpush(x)</p> <p>x</p> <p>Sommet</p> <p>PileProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileAjouter un nouvel lment xpush(x)</p> <p>x x Sommet</p> <p>PileProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Le concept de pileAjouter un nouvel lment xvoid 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 FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Exemples dutilisation</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Exemples dutilisationDomainesLes problmes qui suivent une stratgie LIFO : Last In First Out La premire information tre rcupre est celle qui a t mise en attente en dernierProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Exemples dutilisationDomaine d'utilisation Compilation valuation d'expressionsarithmtiques, logiques, </p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Excution d'une fonctionObjets crs chaque appel Arguments passs par valeurs Variables locales</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Excution d'une fonctionObjets crs chaque appel float echanger(float a, b){ float x = a; a=b; b=x; return x; }Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Excution d'une fonctionObjets crs chaque appel int y =echanger(2.5,5.7);? 5.7 2.5 ?Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>x b a y</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Excution d'une fonctionObjets dtruits chaque retourLes derniers, en vue de retrouver les donnes l'tat o elles taient avant l'appel2.5 2.5 5.7 ?Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>x b a y</p> <p>2.5</p> <p>y</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Mini diteur de texte</p> <p>Effacement de caractres l'aide du caractre '# Destruction d'une ligne l'aide du caractre '@'Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Mini diteur de texteEditeurTap mkd@copie##y fich1 fich2</p> <p>Interprtcopy fich1 fich2Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>#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 FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Exercice 1</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceExpressions avec parenthsesProblmeS'assurer que les parenthses ((et)), les crochets ([et]) et les accolades ({et}) sont correctement imbriqusProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceExpressions avec parenthsesProblme</p> <p>{x+(y-[a+b])*c-[(d+e)]}</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceExpressions 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'ouvreProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceQuestionPour quelle raison la rsolution de ce problme fait-elle appel l'utilisation d'une SD pile?</p> <p>{x+(y-[a+b])*c-[(d+e)]}Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceStratgie LIFOLe dernier dlimiteur ouvert est le premier fermer</p> <p>{x+(y-[a+b])*c-[(d+e)]}Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceQuestionEtat de la pile aprs la lecture de la chane :</p> <p>{x+(y-[a+b])*c-[(d+e)]}Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceEtat de la pile</p> <p>{x+(y-[a+b])*c-[(d+e)]}[ ( {Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>Pile</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceEtat de la pile</p> <p>{x+(y-[a+b])*c-[(d+e)]}[ ( {Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>( [ {</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceEtat de la pile</p> <p>{x+(y-[a+b])*c-[(d+e)]}( [ {Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>( [ {</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceEtat de la pile</p> <p>{x+(y-[a+b])*c-[(d+e)]}</p> <p>[ {Prof. A. EL FAKER</p> <p>{ENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>ExerciceEcrireUn programme qui examine la validit d'une expression mathmatique donne</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>switch(c){ case '(','[','{': correct := push(c); break; case ')',']','}': { o= pop(); switch(o){// dlimiteur ouvrant, on l'empile</p> <p>// dlimiteur fermant, on dpile</p> <p>// Ouvrant et fermant sont de mme type case '(':</p> <p>if(c!=')') correct=false; break; }</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>if ( empty() &amp;&amp; correct ) { printf("\n Votre expression est valide\n"); } else { printf("\n Votre expression n'est pas valide\n"); }Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Exercice 2</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Imbrication des bouclesImbrication des boucles dans un langageDO 1 Instructions DO 2 Instructions END 2 DO 3 Instructions END END 1</p> <p>Sans label</p> <p>Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Imbrication des bouclesLe programme est constitu des expressions</p> <p>DO ENDProf. A. EL FAKER</p> <p>Label Label</p> <p>Label identificateur valide ou blanc</p> <p>ENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Imbrication des bouclesAlgorithmeDO 1 Instructions DO 2 Instructions END 2 DO 3 Instructions END END 1Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p> lire chaque expression, l'afficher l'cran avec un message :BOUCLE 1 OUVERTE BOUCLE 2 OUVERTE</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>Imbrication des bouclesAlgorithme 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;</p> <p>Stocke label quelque part !Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 Introduction etdonnes linaires : les piles</p> <p>Structures de donnes</p> <p>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 RefaireProf. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI</p> <p>n 6 Structures de vue densemble Leon n. 1 In...</p>