Classe Pile à l'aide d'une liste chainée
Le cadre
On cherche à modéliser la structure de Pile déjà étudiée avec une liste simplement chainée. On considère alors une classe Maillon où l'élément pointé est à gauche (on aurait pu aussi choisir à droite).
🐍 Script Python
class Maillon:
def __init__(self, élément):
self.élément = élément
self.gauche = None
class Pile:
def __init__(self): # Déjà disponible.
self.sommet = None
def est_vide(self):
... # À compléter
def empile(self, élément):
... # À compléter
def dépile(self):
... # À compléter
On souhaite compléter l'interface de la classe Pile qui possède un unique attribut sommet qui sera soit None, soit une instance de Maillon.
- Une pile vide sera modélisée par son attribut
sommetqui vautNone - Sinon, une pile sera modélisée par son attribut
sommet: une instance deMaillonportant l'élémentau sommet de la pile et qui pointe àgauchevers le reste de la pile.
Exercice
Coder une suite de la classe Pile en utilisant les docstring suivantes :
- méthode
est_vide:"Renvoie un booléen" - méthode
empile:"Empile unélémentpassé en paramètre" - méthode
dépile:"Dépile et renvoie l'élémentau sommet, sinon provoque une erreur"
On utilisera
raise ValueError("Pile vide !") pour provoquer une erreur volontaire si besoin.
On vous offre une méthode spéciale
__str__ afin d'afficher l'état d'une pile.
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
.128013/.r;nbylaeu)dVM63m(P02è-U,59fq!78 N_o=pcwgv41`kRéhtsSàCDi:E050n0k0Z0j0)0i0!0I0O0i0j0!0!0M010Z0)0N010406050!0l0s0s0j0d0h040#0L0i0l0 0L0f0I020j0s0N0e0I0W0k190d0E0l0k0!050b16181a1c140N04051H1A1K0b1H140n0)0R0@0_0{0}0Y0)0Q0Y0i1Y0Y0Z12050/0g0i0k1T0`0|011X1Z1#1Z0Z1+1-1)0Z0d1I0Z0Y1/1V010D0;0k0f1n0k010@1f0!0N0j0f0}0w1)2f2h231;261-290s2b040a0I0u0d0L0N0L0!0)1i1k0-2d0d0d0k0O2F1A2m0f1I0b212R1~201 1*0n2o0}1#0f282C1)1Q1S0^1:2#0)2%0f0L2+1)0N2K1I2P2R2|152g1k2-242=0d190i120I0T2O30132 2n321;3436380w3b2h3d2P2!013i0j37040I0r3m2Q143p3g0}3s3u0I0S3y3o303q3E380B3I3A3K3C3r0L353t380q3P3e311U3h3U3j3v0G3Z3B3$3D3(3W3v0H3,3R3.3T3V3F0C3@3f3_3M040T0v3~3#2.3`3)0T3a1B3c3Q3 47410T3l4c3n4e46333:3u0T3x4k3z3!3L4p120T3H4t3J4f4o3{4y3O4B4m4w4F423Y4I4v3S4h3+4O3-4g4x423?4B1L2`1A2+2U0n202Z3S0O2?2u0,1R1I2_0k2{3c3I054-0-4^4D1;0V120-0D4`4U240P38553^4g0D121y0Z0K0R0)0-5a4 0}11040t5l4n1;0g5o0!0k0i544Z561;5o0m0*3P0I5H0I4P3_0!2k04011s0f0R0L0)1.0l1k0g0L1f0X28015G5I5K4751042K0Z0l0d0f3I5J5B0}5u125w5y5r3q0L120c5~4Q5{0L180.5?5*240L58040)1z4B5@5b240V0O120J1j0k3P4J3S5,53633_6d5J5A6j3h5d041t0N276w475o5q6A5m015`045|5z2~5^015o0A696U0f120X0i0X2t0f0Z6I245D5F4I5I6i6N5M12010+1o270I5W0I0U6$6(280Z0U0I2g0{0X0I28761a1n0x1~2b5(5H6a3h122K0!0Z6q6h7k0}60040M6Y6B5_5v5x6S4_6U7u626M5s3D65676+6:5)6U6P6R6,1;7F7S7J6Q662t7M2|6=7I017u7w7r6Z120p0:0i0i1j7V6V126L6T7y3r6#6%6)7!7D7{5D7i7$3q7Q7B7?7U7H3L7K7Z89617?6!040Q0j0l0O0Y7q7#7s7(127*8q7,5-5f8p4d6s3_6u0k7C3n8r6y8h6D0n0X6G1-7?6K7?875}8b3S6.848r6@5O0(8M6|0.0I2K5R5T1.0i00707~73758l0I0!7Y0.0A8^2:1j762z5S1w5V2%7a2J0k5:5%7N7j6U5,0)8F2Q853S8S9g4~7%8a7`6N8i5f5h5j8z8G6U6K5E846;8r5,0d0:5w7x9q2u0o3t1x0+2J3U8P7^7?8Z010u6|5i2H0F9a9p7%839b9i8C5e0=9v2Q8r5o6/2|066;9B8w717 9H9n8t9|867A8T9#5 8g8U408d68a6479o819q7}726*9A7O7{9k8f047Ga3647X7L9 3S7)at3_alaa6ba5apa7ar8eaz7TaBad7%8i8k8m8oai9c7{9D0.5:5=7+7{8i9`733Z0b4|4@4!a(0b4%1A0Z4)a-2X2S0j1,a*4%1G9m3q2K0s0K0D0j0V0k0K0Y0r121s1u930?9;4_1N3d1H0%4.2d1o1-7M1O4:2,3_1?1!1$1(a{3S2q282a122w0#0O0d100Z2x0h217=4Z4?9m2}4_a%bv9*043g7?8IaG3D6m047.0;7;aVaC6J12bc4l8H385)bX010!0n6^019!4d8Yb@3v5I0%3$1.b#7:8 0j0R2L0I0j1`bE0g1hbb453qb?b/5H0y0IaZ6*0I0*0I0_0I0R3t980d763U0Z5#7ccx1-0I19b$bK9=b|cj0IclaM8n1.cqcEcGc41k2B2:cA8|0;7a7o0I0$0IcOaO4T7{cib~5Hb_b`4l9^aR528EbV59b;0D0s120K0K2:2Ed19Q5p8Ra19l9/126XaWae04cn809w82129z9(c@6Nayb)aAan8haf9{de9}7vaw4gdva!dnajdpd9amaoaJ8c8j8lcPdAds8u3c9)5+bZ6o2%6rdo7%8Dda6UbWdr2pc 04d17o0dd5b;8Qb;dqdK8Vdlb,3z9@dFd!7maT5;dP3h0g5{1~d67_d^axdHb;acdjdfdhd60m6r9C12bUb;d(ea4gbZ9V8Od;b+cg3S6yb:d)0}c.c;ex5Lb}6;0z0 1#5wcr0j2oc27/b%eF47c.6;eE9(el046veoc|eB25d+d1d35g0Ke8d85{88ev04dm9=d}aQdGe;a2eqdsdJefaKa8di9h8ravdx3q6l6n6pdYd~fac_d$7{epf23L6D9s9X9-bRb*d7d?ece(8WdEe{7%9T5Q5S5U6}5X5Z6%5$aPdT6ke05/e2f99jfve aHdtb;8i8_asfQ3_6c126fe30}fb04dWfq069?ff6tfhc{3v8J5e6{eufw9Rfue}fi6N6Wf)7|dg8;ahe?e^4de`fL1;9T6`8N946 dh75770!797b2g9E0s7f2Kc=d|e`8r8i7n7pg4f88vakfSflauaIgHaDfYaFe_gx7PgG9.7EgJgSaXf4gC9~f!dBb!eRcIfT5nf~e(aYg7f5fr6-dlfK8rd@gKabgUg:7laEa9e(eegVdfc*fqgd7tgZgEdfgAf.f:fzfge!c`e$f^fW8K8$f|g)7@fte(g^h29$d`g?6U9T8#gh7abG8*fD8-8/gkc90l8^8`0Z8|2D2=cV910L93fF1.0k9799hwc^6e9lh66OgRg|h7fVg,5e7o9t5ke?0tgac?gcf;bS9E6fh5gy9J9L0k9N2z0de/b;9Tet1.fp0I9ZeihZ6N5,5x9Ge?d{13h_h`g#ehg!dQg4hsh*8sh,hofXhLdIdug6agg/hdh_g@h)f7g{gygXirfUdR3nh%iuiKixg_33iNh0iL8wh4fKdZhf5.aUg4g-iEa#bQa)2Ra_4$0.7/0!04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)