Upload
sahbi-sk
View
213
Download
0
Embed Size (px)
DESCRIPTION
concepts et exemlpes
Citation preview
Cours Algorithmique et Analyse :Structures linaires (suite)
Mathieu RocheJrme Az
Fond sur le polycopi de J.P Chevillard
2003 - 2004 Universit Paris-Sud
Filire : C4 - DU
Cours Algo - C4-DU 2
2. Les pilesUne PILE est un cas particulier de liste pour laquelle on naccde qu un seul lment : le dernier, do lappellation LIFO (Last In, First Out).
1
p_top
TailleMax
TYPE
ty_structure_de_pile = agrgat_de
t_pile : tableau de ty_lment_de_pile
indic [1..TailleMax];
p_top : indice de t_pile
/* indice du premier lment vide de la pile */
Fin_agrgat ty_structure_de_pile;
VARIABLEpile : ty_structure_de_pile
Remarque : p_top 1
Accder au premier lment vide de la pile :t_pile[p_top](pile) (attention !! notation diffrente du poly)
Cours Algo - C4-DU 3
2. Les pilesDeux procdures importantes relatives aux piles :
- empiler (PUSH) : stocker une valeur au sommet de la pile
- dpiler (POP) : rcuprer la valeur de lobjet qui est au sommet de la pile et libre sa place
Empiler (PUSH)Procdure Empiler (
pile :ty_structure_de_pile, Entre/Sortie;
x : ty_lment_de_pile, Entre; /* valeur empiler */
OK : indicateur boolen, Sortie )
/* si OK = vrai, lopration sest bien droule */
Cours Algo - C4-DU 4
2. Les pilesDpiler (POP)
Initialiser Pile
Procdure Dpiler (
pile :ty_structure_de_pile, Entre/Sortie;
y : ty_lment_de_pile, Sortie; /* valeur dpile */
OK : indicateur boolen, Sortie )
/* range dans y la valeur du sommet de la pile, libre le sommet, si OK = vrai, lopration sest bien droule */
Procdure Init_Pile ( pile :ty_structure_de_pile, Entre/Sortie )
Cours Algo - C4-DU 5
3. Les filesUne FILE est un autre cas particulier de liste pour laquelle on ne peut ajouter de nouvel lment qu la fin de la file et on ne peut extraire un lment quen tte. Do lappellation FIFO (First In, First Out)
p_queuep_tte
TailleMax1
TYPE
ty_structure_de_file = agrgat_de
t_file : tableau de ty_lment_de_file indic [1..TailleMax];
p_tte : indice de t_file /* indice du premier lment sortir */
p_queue : indice de t_file /* indice de la premire place libre */
Fin_agrgat ty_structure_de_file;VARIABLEfile : ty_structure_de_file
Accder la tte de la file : t_file[p_tte](file)
(attention !! notation diffrente du poly)
Cours Algo - C4-DU 6
3. Les filesLorsque aprs une incrmentation de lindice du tableau celui-ci dsigne un indice au-del de la fin du tableau, on donne lindice du dbut du tableau. La fonction suivant effectue une telle tche :
p_ttep_queue
Fonction Suivant ( p : indice de t_file, Entre ) : indice de llment suivant de t_file
si p < TailleMax alors
retourner(p+1);
sinon
retourner(1);
fin_si
Fin_fonction
Cours Algo - C4-DU 7
3. Les filesRemarque : si nous ajoutons un lment de la file presque pleine, elle
devient pleine et on a : p_queue = p_tte
si nous retirons un lment de la file presque vide, elle devient vide et on a aussi : p_tte = p_queue
p_ttep_queue
p_queuep_tte
Conclusion : il nest pas possible de dtecter ltat vide et ltat plein avec le mme test : si (p_queue = p_tte) alors
Cours Algo - C4-DU 8
3. Les filesSolution propose : Chaque procdure qui modifie la file tient jour une variable
indiquant ltat_de_la_file : vide, pleine ou normale (c.-d. ni vide ni pleine).
Ajouter cette variable lagrgat :
TYPE
ty_structure_de_file = agrgat_de
t_file : tableau de ty_lment_de_file indic [1..TailleMax];
p_tte : indice de t_file /* indice du premier lment sortir */
p_queue : indice de t_file /* indice de la premire place libre */
tat_de_la_file : indicateur 3 tats (vide, pleine, normale)
Fin_agrgat ty_structure_de_file;
Cours Algo - C4-DU 9
3. Les filesAjouter
Retirer
Initialiser File
Procdure Retirer (file: ty_structure_de_file, Entre/Sortie;
y : ty_lment_de_file, Sortie;
OK : indicateur boolen, Sortie )
/* si OK = vrai, lopration sest bien droule */
Procdure Init_File (file:ty_structure_de_file, Entre/Sortie)
Procdure Ajouter (file: ty_structure_de_file, Entre/Sortie;
x : ty_lment_de_file, Entre;
OK : indicateur boolen, Sortie )
/* si OK = vrai, lopration sest bien droule */
Cours Algorithmique et Analyse :Structures linaires (suite)2. Les piles2. Les piles2. Les piles3. Les files3. Les files3. Les files3. Les files3. Les files