Skip to content
Snippets Groups Projects
Commit a457cd47 authored by paul.albuquer's avatar paul.albuquer
Browse files

added source files for stack structure, tri à 2 piles with image

parent d2e4ea03
No related branches found
No related tags found
No related merge requests found
Pipeline #14885 passed
# Algorithmes et structures de données
# Structure de piles
*****
## 1. Définition
Une pile est une structure de données dans laquelle la dernière information entrée, est la première à ressortir (en anglais : LIFO, Last In First Out)
On envisage deux types d'implémentation de piles:
1. l'une à capacité limitée (piles dénommées statiques);
2. l'autre à capacité « infinie » (piles dénommées dynamiques dont la capacité limite dépend en réalité de la mémoire disponible).
## 2. Spécification de la structure
Le type des éléments qu'on empile, n'étant pas précisé, on parle de spécification générique.
Les opérations possibles sur une pile en définissent l'interface :
* Opérations de manipulation
* Empiler un nouvel élément sur la pile
* Dépiler l'élément au sommet de la pile (i.e. le dernier élément introduit)
* Fonctions de consultation
* Lire l'élément au sommet de la pile
* Tester si la pile est vide
* Tester si la pile a atteint la capacité maximale, seulement dans le cas d'une pile statique
* L'interface de la pile est l'ensemble des fonctionnalités offertes à l'utilisateur pour interagir avec une pile
## 3. Quelques applications des piles
* Gérer les mécanismes internes de mise en œuvre de la récursivité
* Traiter les structures imbriquées
* Implémenter les machines abstraites
* Passer les paramètres aux procédures
* Sauver l'état d'un processus
\ No newline at end of file
%!PS-Adobe-2.0 EPSF-2.0
%%Title: exemple.fig
%%Creator: fig2dev Version 3.2 Patchlevel 4
%%CreationDate: Fri Jan 27 14:34:17 2006
%%For: lazeyras@eig2 (LAZEYRAS Michel - EIG prof)
%%BoundingBox: 0 0 470 325
%%Magnification: 1.0000
%%EndComments
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/col-1 {0 setgray} bind def
/col0 {0.000 0.000 0.000 srgb} bind def
/col1 {0.000 0.000 1.000 srgb} bind def
/col2 {0.000 1.000 0.000 srgb} bind def
/col3 {0.000 1.000 1.000 srgb} bind def
/col4 {1.000 0.000 0.000 srgb} bind def
/col5 {1.000 0.000 1.000 srgb} bind def
/col6 {1.000 1.000 0.000 srgb} bind def
/col7 {1.000 1.000 1.000 srgb} bind def
/col8 {0.000 0.000 0.560 srgb} bind def
/col9 {0.000 0.000 0.690 srgb} bind def
/col10 {0.000 0.000 0.820 srgb} bind def
/col11 {0.530 0.810 1.000 srgb} bind def
/col12 {0.000 0.560 0.000 srgb} bind def
/col13 {0.000 0.690 0.000 srgb} bind def
/col14 {0.000 0.820 0.000 srgb} bind def
/col15 {0.000 0.560 0.560 srgb} bind def
/col16 {0.000 0.690 0.690 srgb} bind def
/col17 {0.000 0.820 0.820 srgb} bind def
/col18 {0.560 0.000 0.000 srgb} bind def
/col19 {0.690 0.000 0.000 srgb} bind def
/col20 {0.820 0.000 0.000 srgb} bind def
/col21 {0.560 0.000 0.560 srgb} bind def
/col22 {0.690 0.000 0.690 srgb} bind def
/col23 {0.820 0.000 0.820 srgb} bind def
/col24 {0.500 0.190 0.000 srgb} bind def
/col25 {0.630 0.250 0.000 srgb} bind def
/col26 {0.750 0.380 0.000 srgb} bind def
/col27 {1.000 0.500 0.500 srgb} bind def
/col28 {1.000 0.630 0.630 srgb} bind def
/col29 {1.000 0.750 0.750 srgb} bind def
/col30 {1.000 0.880 0.880 srgb} bind def
/col31 {1.000 0.840 0.000 srgb} bind def
end
save
newpath 0 325 moveto 0 0 lineto 470 0 lineto 470 325 lineto closepath clip newpath
-35.3 342.0 translate
1 -1 scale
/cp {closepath} bind def
/ef {eofill} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth} bind def
/tr {translate} bind def
/tnt {dup dup currentrgbcolor
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
bind def
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul srgb} bind def
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
10 setmiterlimit
0 slj 0 slc
0.06000 0.06000 sc
%
% Fig objects follow
%
%
% here starts figure with depth 50
% Polyline
7.500 slw
n 600 2400 m 1200 2400 l 1200 2100 l 600 2100 l
cp gs col0 s gr
% Polyline
n 600 2100 m 1200 2100 l 1200 1800 l 600 1800 l
cp gs col0 s gr
% Polyline
n 600 1800 m 1200 1800 l 1200 1500 l 600 1500 l
cp gs col0 s gr
% Polyline
n 600 1500 m 1200 1500 l 1200 1200 l 600 1200 l
cp gs col0 s gr
% Polyline
n 600 1200 m 1200 1200 l 1200 900 l 600 900 l
cp gs col0 s gr
% Polyline
n 600 900 m 1200 900 l 1200 600 l 600 600 l
cp gs col0 s gr
% Polyline
n 600 600 m 1200 600 l 1200 300 l 600 300 l
cp gs col0 s gr
% Polyline
n 1800 2400 m 2400 2400 l 2400 2100 l 1800 2100 l
cp gs col0 s gr
% Polyline
n 1800 2100 m 2400 2100 l 2400 1800 l 1800 1800 l
cp gs col0 s gr
% Polyline
n 1800 1800 m 2400 1800 l 2400 1500 l 1800 1500 l
cp gs col0 s gr
% Polyline
n 1800 1500 m 2400 1500 l 2400 1200 l 1800 1200 l
cp gs col0 s gr
% Polyline
n 1800 1200 m 2400 1200 l 2400 900 l 1800 900 l
cp gs col0 s gr
% Polyline
n 1800 900 m 2400 900 l 2400 600 l 1800 600 l
cp gs col0 s gr
% Polyline
n 1800 600 m 2400 600 l 2400 300 l 1800 300 l
cp gs col0 s gr
% Polyline
n 600 2400 m
2400 2400 l gs col0 s gr
% Polyline
n 3600 2400 m 4200 2400 l 4200 2100 l 3600 2100 l
cp gs col0 s gr
% Polyline
n 3600 2100 m 4200 2100 l 4200 1800 l 3600 1800 l
cp gs col0 s gr
% Polyline
n 3600 1800 m 4200 1800 l 4200 1500 l 3600 1500 l
cp gs col0 s gr
% Polyline
n 3600 1500 m 4200 1500 l 4200 1200 l 3600 1200 l
cp gs col0 s gr
% Polyline
n 3600 1200 m 4200 1200 l 4200 900 l 3600 900 l
cp gs col0 s gr
% Polyline
n 3600 900 m 4200 900 l 4200 600 l 3600 600 l
cp gs col0 s gr
% Polyline
n 3600 600 m 4200 600 l 4200 300 l 3600 300 l
cp gs col0 s gr
% Polyline
n 4800 2400 m 5400 2400 l 5400 2100 l 4800 2100 l
cp gs col0 s gr
% Polyline
n 4800 2100 m 5400 2100 l 5400 1800 l 4800 1800 l
cp gs col0 s gr
% Polyline
n 4800 1800 m 5400 1800 l 5400 1500 l 4800 1500 l
cp gs col0 s gr
% Polyline
n 4800 1500 m 5400 1500 l 5400 1200 l 4800 1200 l
cp gs col0 s gr
% Polyline
n 4800 1200 m 5400 1200 l 5400 900 l 4800 900 l
cp gs col0 s gr
% Polyline
n 4800 900 m 5400 900 l 5400 600 l 4800 600 l
cp gs col0 s gr
% Polyline
n 4800 600 m 5400 600 l 5400 300 l 4800 300 l
cp gs col0 s gr
% Polyline
n 3600 2400 m
5400 2400 l gs col0 s gr
% Polyline
n 6600 2400 m 7200 2400 l 7200 2100 l 6600 2100 l
cp gs col0 s gr
% Polyline
n 6600 2100 m 7200 2100 l 7200 1800 l 6600 1800 l
cp gs col0 s gr
% Polyline
n 6600 1800 m 7200 1800 l 7200 1500 l 6600 1500 l
cp gs col0 s gr
% Polyline
n 6600 1500 m 7200 1500 l 7200 1200 l 6600 1200 l
cp gs col0 s gr
% Polyline
n 6600 1200 m 7200 1200 l 7200 900 l 6600 900 l
cp gs col0 s gr
% Polyline
n 6600 900 m 7200 900 l 7200 600 l 6600 600 l
cp gs col0 s gr
% Polyline
n 6600 600 m 7200 600 l 7200 300 l 6600 300 l
cp gs col0 s gr
% Polyline
n 7800 2400 m 8400 2400 l 8400 2100 l 7800 2100 l
cp gs col0 s gr
% Polyline
n 7800 2100 m 8400 2100 l 8400 1800 l 7800 1800 l
cp gs col0 s gr
% Polyline
n 7800 1800 m 8400 1800 l 8400 1500 l 7800 1500 l
cp gs col0 s gr
% Polyline
n 7800 1500 m 8400 1500 l 8400 1200 l 7800 1200 l
cp gs col0 s gr
% Polyline
n 7800 1200 m 8400 1200 l 8400 900 l 7800 900 l
cp gs col0 s gr
% Polyline
n 7800 900 m 8400 900 l 8400 600 l 7800 600 l
cp gs col0 s gr
% Polyline
n 7800 600 m 8400 600 l 8400 300 l 7800 300 l
cp gs col0 s gr
% Polyline
n 6600 2400 m
8400 2400 l gs col0 s gr
% Polyline
n 600 5400 m 1200 5400 l 1200 5100 l 600 5100 l
cp gs col0 s gr
% Polyline
n 600 5100 m 1200 5100 l 1200 4800 l 600 4800 l
cp gs col0 s gr
% Polyline
n 600 4800 m 1200 4800 l 1200 4500 l 600 4500 l
cp gs col0 s gr
% Polyline
n 600 4500 m 1200 4500 l 1200 4200 l 600 4200 l
cp gs col0 s gr
% Polyline
n 600 4200 m 1200 4200 l 1200 3900 l 600 3900 l
cp gs col0 s gr
% Polyline
n 600 3900 m 1200 3900 l 1200 3600 l 600 3600 l
cp gs col0 s gr
% Polyline
n 600 3600 m 1200 3600 l 1200 3300 l 600 3300 l
cp gs col0 s gr
% Polyline
n 1800 5400 m 2400 5400 l 2400 5100 l 1800 5100 l
cp gs col0 s gr
% Polyline
n 1800 5100 m 2400 5100 l 2400 4800 l 1800 4800 l
cp gs col0 s gr
% Polyline
n 1800 4800 m 2400 4800 l 2400 4500 l 1800 4500 l
cp gs col0 s gr
% Polyline
n 1800 4500 m 2400 4500 l 2400 4200 l 1800 4200 l
cp gs col0 s gr
% Polyline
n 1800 4200 m 2400 4200 l 2400 3900 l 1800 3900 l
cp gs col0 s gr
% Polyline
n 1800 3900 m 2400 3900 l 2400 3600 l 1800 3600 l
cp gs col0 s gr
% Polyline
n 1800 3600 m 2400 3600 l 2400 3300 l 1800 3300 l
cp gs col0 s gr
% Polyline
n 600 5400 m
2400 5400 l gs col0 s gr
% Polyline
n 3600 5400 m 4200 5400 l 4200 5100 l 3600 5100 l
cp gs col0 s gr
% Polyline
n 3600 5100 m 4200 5100 l 4200 4800 l 3600 4800 l
cp gs col0 s gr
% Polyline
n 3600 4800 m 4200 4800 l 4200 4500 l 3600 4500 l
cp gs col0 s gr
% Polyline
n 3600 4500 m 4200 4500 l 4200 4200 l 3600 4200 l
cp gs col0 s gr
% Polyline
n 3600 4200 m 4200 4200 l 4200 3900 l 3600 3900 l
cp gs col0 s gr
% Polyline
n 3600 3900 m 4200 3900 l 4200 3600 l 3600 3600 l
cp gs col0 s gr
% Polyline
n 3600 3600 m 4200 3600 l 4200 3300 l 3600 3300 l
cp gs col0 s gr
% Polyline
n 4800 5400 m 5400 5400 l 5400 5100 l 4800 5100 l
cp gs col0 s gr
% Polyline
n 4800 5100 m 5400 5100 l 5400 4800 l 4800 4800 l
cp gs col0 s gr
% Polyline
n 4800 4800 m 5400 4800 l 5400 4500 l 4800 4500 l
cp gs col0 s gr
% Polyline
n 4800 4500 m 5400 4500 l 5400 4200 l 4800 4200 l
cp gs col0 s gr
% Polyline
n 4800 4200 m 5400 4200 l 5400 3900 l 4800 3900 l
cp gs col0 s gr
% Polyline
n 4800 3900 m 5400 3900 l 5400 3600 l 4800 3600 l
cp gs col0 s gr
% Polyline
n 4800 3600 m 5400 3600 l 5400 3300 l 4800 3300 l
cp gs col0 s gr
% Polyline
n 3600 5400 m
5400 5400 l gs col0 s gr
% Polyline
n 6600 5400 m 7200 5400 l 7200 5100 l 6600 5100 l
cp gs col0 s gr
% Polyline
n 6600 5100 m 7200 5100 l 7200 4800 l 6600 4800 l
cp gs col0 s gr
% Polyline
n 6600 4800 m 7200 4800 l 7200 4500 l 6600 4500 l
cp gs col0 s gr
% Polyline
n 6600 4500 m 7200 4500 l 7200 4200 l 6600 4200 l
cp gs col0 s gr
% Polyline
n 6600 4200 m 7200 4200 l 7200 3900 l 6600 3900 l
cp gs col0 s gr
% Polyline
n 6600 3900 m 7200 3900 l 7200 3600 l 6600 3600 l
cp gs col0 s gr
% Polyline
n 6600 3600 m 7200 3600 l 7200 3300 l 6600 3300 l
cp gs col0 s gr
% Polyline
n 7800 5400 m 8400 5400 l 8400 5100 l 7800 5100 l
cp gs col0 s gr
% Polyline
n 7800 5100 m 8400 5100 l 8400 4800 l 7800 4800 l
cp gs col0 s gr
% Polyline
n 7800 4800 m 8400 4800 l 8400 4500 l 7800 4500 l
cp gs col0 s gr
% Polyline
n 7800 4500 m 8400 4500 l 8400 4200 l 7800 4200 l
cp gs col0 s gr
% Polyline
n 7800 4200 m 8400 4200 l 8400 3900 l 7800 3900 l
cp gs col0 s gr
% Polyline
n 7800 3900 m 8400 3900 l 8400 3600 l 7800 3600 l
cp gs col0 s gr
% Polyline
n 7800 3600 m 8400 3600 l 8400 3300 l 7800 3300 l
cp gs col0 s gr
% Polyline
n 6600 5400 m
8400 5400 l gs col0 s gr
/Times-Roman ff 180.00 scf sf
825 2325 m
gs 1 -1 sc (17) col0 sh gr
/Times-Roman ff 180.00 scf sf
825 2700 m
gs 1 -1 sc (Traitement de 17) col0 sh gr
/Times-Roman ff 180.00 scf sf
6825 2700 m
gs 1 -1 sc (Traitement de 20) col0 sh gr
/Times-Roman ff 180.00 scf sf
825 5700 m
gs 1 -1 sc (Traitement de 40) col0 sh gr
/Times-Roman ff 180.00 scf sf
3900 5700 m
gs 1 -1 sc (Traitement de 25) col0 sh gr
/Times-Roman ff 180.00 scf sf
3825 2700 m
gs 1 -1 sc (Traitement de 34) col0 sh gr
/Times-Roman ff 180.00 scf sf
7125 5700 m
gs 1 -1 sc (Etat final) col0 sh gr
/Times-Roman ff 180.00 scf sf
3825 2325 m
gs 1 -1 sc (34) col0 sh gr
/Times-Roman ff 180.00 scf sf
5025 2325 m
gs 1 -1 sc (17) col0 sh gr
/Times-Roman ff 180.00 scf sf
6825 2325 m
gs 1 -1 sc (34) col0 sh gr
/Times-Roman ff 180.00 scf sf
6825 2025 m
gs 1 -1 sc (20) col0 sh gr
/Times-Roman ff 180.00 scf sf
8025 2325 m
gs 1 -1 sc (17) col0 sh gr
/Times-Roman ff 180.00 scf sf
825 5325 m
gs 1 -1 sc (40) col0 sh gr
/Times-Roman ff 180.00 scf sf
2025 5325 m
gs 1 -1 sc (17) col0 sh gr
/Times-Roman ff 180.00 scf sf
2025 5025 m
gs 1 -1 sc (20) col0 sh gr
/Times-Roman ff 180.00 scf sf
2025 4725 m
gs 1 -1 sc (34) col0 sh gr
/Times-Roman ff 180.00 scf sf
3825 5325 m
gs 1 -1 sc (40) col0 sh gr
/Times-Roman ff 180.00 scf sf
3825 5025 m
gs 1 -1 sc (34) col0 sh gr
/Times-Roman ff 180.00 scf sf
3825 4725 m
gs 1 -1 sc (25) col0 sh gr
/Times-Roman ff 180.00 scf sf
4950 5325 m
gs 1 -1 sc ( 17) col0 sh gr
/Times-Roman ff 180.00 scf sf
4950 5025 m
gs 1 -1 sc (20) col0 sh gr
/Times-Roman ff 180.00 scf sf
6825 5325 m
gs 1 -1 sc (40) col0 sh gr
/Times-Roman ff 180.00 scf sf
6825 5025 m
gs 1 -1 sc (34) col0 sh gr
/Times-Roman ff 180.00 scf sf
6825 4425 m
gs 1 -1 sc (20) col0 sh gr
/Times-Roman ff 180.00 scf sf
6825 4125 m
gs 1 -1 sc (17) col0 sh gr
/Times-Roman ff 180.00 scf sf
6750 4725 m
gs 1 -1 sc ( 25) col0 sh gr
% here ends figure;
$F2psEnd
rs
showpage
\documentclass[a4paper,11pt,dvips]{article}
\usepackage{epsfig}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\pagestyle{myheadings}
%\markright{Tri à deux piles}
\advance\voffset by -0.5in
\textheight=230mm
\textwidth=165mm
\oddsidemargin=0pt
\evensidemargin=0pt
\topmargin=0pt
\headheight=0pt
\parindent=0cm
\date{}
\title{
\vspace*{-2cm}
\begin{tabular}{|l|}
\hline \\
{\fontsize{16}{25} \bf Algorithmique et structures de données} \\
\vspace*{-0.5cm}\\
\hline
{\bf\it \quad Tri à deux piles}\\
\hline
{\tiny ISC - HEPIA - HES-SO//Genève} \\
\hline
\end{tabular}
}
\begin{document}
\maketitle
\smallskip
\thispagestyle{empty}
\renewcommand{\labelitemi}{$\bullet$}
\vspace*{-2cm}
\section*{Description}
\medskip
\begin{itemize}
\item Le tableau est parcouru élément par élément.
\item Une première pile (celle de gauche dans l'exemple de la figure~\ref{fig1})
contient toujours des éléments triés en ordre croissant en partant du sommet.
\item Une seconde pile (celle de droite dans l'exemple de la figure~\ref{fig1})
contient toujours des éléments en ordre décroissant en partant du sommet.
\item A chaque étape, on dépile les éléments d'une des piles pour les empiler
dans l'autre, jusqu'à ce que l'élément traité soit empilable dans la pile de
gauche en respectant l'ordre dans chacune des deux piles.
\item En fin de tri, tous les éléments se trouvent dans la première pile; on
termine donc le tri en vidant cette pile dans le tableau de départ.
\end{itemize}
\section*{Exemple}
L'exemple décrit ci-dessous est illustré à la figure~\ref{fig1}.
Soit le tableau à trier suivant:
\begin{center}
\begin{tabular}{|c|c|c|c|c|}
\hline
17 & 34 & 20 & 40 & 25 \\
\hline
\end{tabular}
\end{center}
Le tableau est parcouru de gauche à droite.
\medskip
\begin{itemize}
\item 17 est placé dans la pile de gauche.
\item 34 est plus grand que 17: 17 est dépilé de la pile de gauche pour être
empilé dans la pile de droite; 34 est placé dans la pile de gauche.
\item 20 est plus petit que 34 et plus grand que 17: il est empilé dans la pile
de gauche.
\item 40 est comparé avec 20 et 34: ceux-ci sont dépilés de la pile de gauche
pour être empilés dans la pile de droite; 40 est empilé à gauche.
\item 25 est plus petit que 34: celui-ci est dépilé de droite pour être empilé à
gauche; 25 est empilé à gauche.
\item Il n'y a plus d'élément à traiter: la pile de droite est vidée, chacun de
ces éléments étant empilé dans la pile de gauche; cette pile contient au final
tous les éléments en ordre croissant en partant du sommet.
\item Il ne reste plus qu'à vider la première pile dans le tableau.
\end{itemize}
\begin{center}
\begin{figure}[ht]
\begin{center}
\epsfig{file=figures/stack_sort_expl.eps, width=12cm, height=9cm}
\end{center}
\caption{Utilisation des deux piles pour le tri}
\label{fig1}
\end{figure}
\end{center}
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment