<h1 id="les-piles-et-les-files">Les Piles et les Files</h1> <p>Les <strong>piles</strong> et les <strong>files</strong> sont des types n'existant pas formellement en Python. Pour les exploiter nous utiliserons donc dans un premier temps les <strong>listes</strong> en se restreignant à quelques commandes basiques.</p> <h2 id="les-piles">Les PILES</h2> <p>Les piles sont des objets FILO (First In Last Out), c'est-à-dire que les valeurs entrées en premier ne peuvent être récupérées que en dernier. Exactement comme une pile de crêpes, la première crêpe cuite sera mangée en dernier.<br>La représentation la plus courante est celle d'une pile de dossiers. Pour accéder à celui qui est en dessous on doit enlever ceux d'au dessus un par un. <img src="https://pixy.org/src/452/thumbs350/4522322.jpg" alt="pile"></p> <p>Concernant les Piles on peut donc définir quatre opérations :</p> <ul> <li>Regarder si la pile est vide</li> <li>Regarder l'élément au sommet de la pile</li> <li>Enlever l'élément au sommet de la pile</li> <li>Ajouter un élément sur la pile</li> </ul> <p>Imaginons que l'on a la pile suivante :</p> <pre><code class="lang-txt">╔═══╗ ║ <span class="hljs-number">5</span> ║ ╠═══╣ ║ <span class="hljs-number">4</span> ║ ╠═══╣ ║ <span class="hljs-number">8</span> ║ ╠═══╣ ║ <span class="hljs-number">6</span> ║ ╠═══╣ ║ <span class="hljs-number">3</span> ║ ╠═══╣ ║ <span class="hljs-number">2</span> ║ ╚═══╝ </code></pre> <p>Voici successivement un dépilement, puis un empilement de la valeur 8</p> <pre><code class="lang-txt"> - depile -> ╔═══╗ ╔═══╗ ╔═══╗ ║ <span class="hljs-number">5</span> ║ ║ ║ ║ <span class="hljs-number">8</span> ║ ╠═══╣ ╠═══╣ ╠═══╣ ║ <span class="hljs-number">4</span> ║ ║ <span class="hljs-number">4</span> ║ ║ <span class="hljs-number">4</span> ║ ╠═══╣ ╠═══╣ ╠═══╣ ║ <span class="hljs-number">8</span> ║ ║ <span class="hljs-number">8</span> ║ ║ <span class="hljs-number">8</span> ║ ╠═══╣ ╠═══╣ ╠═══╣ ║ <span class="hljs-number">6</span> ║ ║ <span class="hljs-number">6</span> ║ ║ <span class="hljs-number">6</span> ║ ╠═══╣ ╠═══╣ ╠═══╣ ║ <span class="hljs-number">3</span> ║ ║ <span class="hljs-number">3</span> ║ ║ <span class="hljs-number">3</span> ║ ╠═══╣ ╠═══╣ ╠═══╣ ║ <span class="hljs-number">2</span> ║ ║ <span class="hljs-number">2</span> ║ ║ <span class="hljs-number">2</span> ║ ╚═══╝ ╚═══╝ ╚═══╝ - empile(<span class="hljs-number">8</span>) -> </code></pre> <p>Pour travailler sur les piles en Python on se limitera aux fonctions :</p> <table> <thead> <tr> <th>opération</th> <th>Fonction en Python</th> </tr> </thead> <tbody> <tr> <td>regarder si la pile est vide</td> <td><code>not not Pile</code></td> </tr> <tr> <td>regarder le sommet de la pile</td> <td><code>Pile[-1]</code></td> </tr> <tr> <td>Enlever l'élément au sommet</td> <td><code>Pile.pop()</code></td> </tr> <tr> <td>Ajouter un élément à la pile</td> <td><code>Pile.append(element)</code></td> </tr> </tbody> </table> <h2 id="les-files">Les files</h2> <p>Les files sont des objets FIFO (First In First Out), c'est-à-dire que les valeurs entrées en premier sont récupérées en premier. Exactement comme dans une file d'attente, le premier arrivé sera le premier servi.<br><img src="https://thumbs.dreamstime.com/b/les-gens-dans-la-file-d-attente-15346257.jpg" alt="file"></p> <p>Pour les files, les opérations autorisées sont quasiment les mêmes que pour les piles :</p> <ul> <li>Regarder le premier élément de la file</li> <li>Ajouter un élément à la file</li> <li>Enlever le premier élément de la file</li> <li>Regarder si la file est vide</li> </ul> <p>Pour travailler sur les files en Python on se limitera aux fonctions :</p> <table> <thead> <tr> <th>opération</th> <th>Fonction en Python</th> </tr> </thead> <tbody> <tr> <td>regarder si la file est vide</td> <td><code>not File</code></td> </tr> <tr> <td>regarder début de la file</td> <td><code>File[0]</code></td> </tr> <tr> <td>Enlever le premier élément</td> <td><code>File.pop(0)</code></td> </tr> <tr> <td>Ajouter un élément à la file</td> <td><code>File.append(element)</code></td> </tr> </tbody> </table> <h1 id="voir-td-pour-plus-de-d-tails">Voir TD pour plus de détails</h1>