Aller au contenu

Pile avec une liste chainée⚓︎

On veut écrire une classe pour gérer une pile à l'aide d'une liste chainée. On dispose d'une classe Maillon permettant la création d'un maillon de la chaine, celui-ci étant constitué d'une donnée valeur et d'une référence au maillon suivant de la chaine:

🐍 Script Python
class Maillon:
    def __init__(self, valeur, suivant):
        self.valeur = valeur
        self.suivant = suivant

Une pile non vide est représentée par des maillons avec un maillon de tête, le dernier ajouté à la pile avec la fonction empile et celui qu'on va enlever de la pile avec la fonction depile.

Le maillon de tête contient l'élément au sommet de la pile. Ci-dessous la représentation d'une pile dans laquelle on a empilé 9, puis 2, puis 8, puis 5:

représentation d'une pile

Compléter la classe Pile et vérifier votre travail sur les exemples. On vous donne la méthode __init__ qui initialise une pile, la méthode __str__ qui permet un affichage des éléments de la pile, la méthode est_vide qui renvoie True si la pile est vide et False sinon.

Exemples
>>> p = Pile()  # une pile vide
>>> p.est_vide()
True
>>> p.empile(9)
>>> p.est_vide()
False
>>> p.empile(5)
>>> p.empile(8)
>>> print(p)
8 -> 5 -> 9
>>> p.depile()
8
>>> p.depile()
5

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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
Évaluations restantes : 10/10

.128013nLxFimwgyk02P;o, 5à6+uRMal84t/sbrvce.N3)fh-:1S=9é7_dqpD(050!0K0D0z0f0A0F0r0J0A0z0F0F0V010D0f0$010406050F0w0g0g0z0H0j040U0p0A0w0|0p0b0r020z0g0$0o0r0x0K160H0#0w0K0F050E13151719110$041x1E051H0E1H1J1E110!0f0I0;0?0^0`0Q0f0i0Q0A1X0Q0D0 050,0G0A0K1S0@0_011W1Y1!1Y0D1*1,1(0D0G0p0!191)0H1F0D0Q0;1c0F0$0z0b0`0m011.1U010P0.0K0b1k0K1(292b2g1:2j1,2m0g2o040a0r0n0H0p0$0p0F0f1f1h0*270H0H0K0J2J1x2q0b1F0E252V0D2322240!2s0`1!0b2l2G1(1P1R0=1/2)0f2+0b1 1Q1(0$2O1F2T2V30122a1h2;2h2_0H160A0 0r0T2S3410332r361:383a3c0m3f2b3h2T2(013m0z3b040r0N3q2U113t3k0`3w3y0r0C3C3s343u3I3c0s3M3E3O3G3v0p393x3c0u3T3i351T3l3Y3n3z0Y3%3F3*3H3,3!3z0B3:3V3=3X3Z3J0W3{3j3}3Q040T0l423)2=3~3-0T3e1y3g3U434b450T3p4g3r4i4a373@3y0T3B4o3D3(3P4t0 0T3L4x3N4j4s3 4C3S4F4q4A4J463$4M4z3W4l3/4S3;4k4B463`4X3|4Z4P0T414%4H3+4P0m484-4r4/3-0m4f304N4U4!0m4n4|4T444 4w524Y4I4_4E574(593^0m4L5c4.3?4:4R5i4@5k4_4W5n4O4_4$5s4~4:4,5w544P0N4=5A4)3-0N4{4h535G3^0N515K584^5N563g1G2~1x2/2Y0!2$3u0J1 2y0)1Q1F2}0K2 5V4F055(0*5:5j010k0 3k3M5L2h0h3c5 5R3H0J0 0y0-0A0A1g645d1:0~040S3T0r6l0r601:5|040*0P6e5`623z6u5o2i0g0 0Z0Z2@2I6D6y3u6h0(6I3W0G6h0F0K0A6t5=65016h0q3M6n6V0b0 0I3x0K0w0H6M3}6X6Z6o3H0 131Q2b0D6-4b6h0O6j4M6m716!6f0`6O6?6R6T326V0p0 0L6{376%6)6+6:7b0 0V7k743v7h1,7j70726l6;0176046Q6S7f1:7c047e6U7p6$7A0w6^0b6`4F735`7F7n7Q7x7K6@6(7O3T06717x6q6s7D0`6w6n7I5`0P6B046D0F2Z6H7/6z6K7+7y6P787~6}6 4|7v7w6V6q0f793g7R6z7z7B8b3r7x7F7H7a7J6?7M7Z7P308d3u0p6w0f1w7V8867040M1g0K820 844h86727(0 2O0D6+0b7o5`0b0G6?2Z8G046L7{3u8f818#3W8k7~7K6(7s6,8)6.0 0O6k868M048O8Q8S6z8U8W8:8m5`7}8;4b8%7C962h8+9a3l7r6*925V6V6}8~8u0 0v9l3W0F2e042f0R020i0D1n019p3}7F9o8z7J8V7A8X9d0`95938e80999N9m7G8,8o7N8r9i7p9k4M064}3}6q5~9K017-8,8B0n2k8Y8I4p7%880 7*9+9-9+7;6C6E0b6G0Z8Y8!9R6N9P8h2U7x838^7v7x98aa5_6z9ca7446?0p150+9B4b7Tas2h0k8B8D2+7#9^7p7)0Kai7x9}am4k0P0 1v0D0Z0I0f0*a57~ah8Y6~ae8L9_8{0+8}9F5`aV9+al9Y8Taoaq9X3r8t8*8w8y8s7(ay8EaB6m8`9{aJ61639~7=7@7_a49+9Ma-9O779Qbc6J8?9?3D8K8`8|0H8Ra(8 9H7^9h8i9j0 a6bga8beaG7l9T9+7Xap2xa;abbw048@9#aC5`aEbC7paIbz44aL041q0$9;babxaUa98Y6Ybq3PaM1,2x7!b$bMbj10bl6#0 2_0w0I0K0z0w0Z160.6cbpa`bD7Uc78n0469c46db=bybvcb6R1q2lbJajbh04b+caa)b)a+7d9U7AbHarb=bN858_6Va*b27EcwbFa/bIavcI04c98c7Wb{0pb}b c1c36bcf4|7$a a!b1bV4bbUci8TbX0*b!1,aT9+cGc*2had7uafa!8acN0`8vcTcna?3}c^c-akcJcH6=bY7^aPaR8FcgaXc|8Kd54k0 cYc5d001aub,bA7A8(dbdsdac_9ecya:aYb_cjb/cmdrdtcs8 do6adqcvbEdy8-7ibubkdl877pd7bK7pa,d8b-dDcMdu9C7mdr7Kdpc!dBd1dAd)4U9V8qdFcEaD8Na$bod:b.clb;cDc}e0bY0/dhdy6hb@c$dYbme2c6cR8A0 azed5K0E5@5/5Weu0E5Z1x0D5#ez2!2W1~202Y0z1+ew5Z1Dco3W2O0g0Z0P0z0k0K0Z0Q0N0 1p1r1t1v0rb@1G3h1E0%2b0:0?0r0g0X255)6net6r0Kc;dhe`0q0r1,e_5)eb6Q0S0rbn1hep1xe`0r0b00aN0r2a0:0b0X0J1v0F0-2Ofi7M0Fe$0r2H0r0w1h0z0$0$6R0r2L0P1g2Q0f1gfe1-6Q0r0D0K392@1-fjfi17fy1h5?f4f9fcf4f0e:8.9gf35^fbesf40rfhc00Dap0z0|e$b:0Df82l0I0p0j0X0K7H1N1I040cfg0dfR0J0ffn6n0z0r0Q2O0P0`0L0L0E2ueV0zb~0J0Z1!7^0K0E0 0e2k0r0tfW0H0|0HfF00fz1-gxfQ0;0Q0-fldh0z3z2}2E2GgNgi2O2}0X6Q7Of`fK2KgL2+0rgrgGfYgN8xgP0JgR2@g4g63hex0+6a0F04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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
Évaluations restantes : 10/10

.9875.128013.65038nFmwgPo,6uRa8bsrvce-1S9_d(Lxiyk02; 5à+Ml4t/.3)fh:=é7qNpD050B0v0S0o0F0Q0r0L0u0Q0o0r0r0!010S0F0)010406050r0m0f0f0o0s0G040y0j0Q0m0~0j0d0L020o0f0)0K0L0n0v180s0%0m0v0r050T1517191b130)041z1G051J0T1J1L1G130B0F0t0?0^0`0|0Y0F0h0Y0Q1Z0Y0S11050.0q0Q0v1U0_0{011Y1!1$1!0S1,1.1*0S0q0j0B1b1+0s1H0S0Y0?1e0r0)0o0d0|0J011:1W010X0:0v0d1m0v1*2b2d2i1=2l1.2o0f2q040b0L0i0s0j0)0j0r0F1h1j0,290s0s0v0u2L1z2s0d1H0T272X0S2524260B2u0|1$0d2n2I1*1R1T0@1;2+0F2-0d211S1*0)2Q1H2V2X32142c1j2?2j2{0s180Q110L0x2U3612352t381=3a3c3e0J3h2d3j2V2*013o0o3d040L0V3s2W133v3m0|3y3A0L0R3E3u363w3K3e0M3O3G3Q3I3x0j3b3z3e0l3V3k371V3n3!3p3B0$3)3H3,3J3.3$3B0p3=3X3@3Z3#3L0z3}3l3 3S040x0I443+2@403/0x3g1A3i3W454d470x3r4i3t4k4c393_3A0x3D4q3F3*3R4v110x3N4z3P4l4u414E3U4H4s4C4L483(4O4B3Y4n3;4U3?4m4D483|4Z3~4#4R0x434)4J3-4R0J4a4/4t4;3/0J4h324P4W4$0J4p4~4V46514y544!4K4{4G594*5b3`0J4N5e4:3^4=4T5k4_5m4{4Y5p4Q4{4(5u504=4.5y564R0V4@5C4+3/0V4}4j555I3`0V535M5a4`5P583i1I301z2;2!0B2(3w0u212A0+1S1H2 0v315X4H055*0,5=5l010H113m3O5N2j0g3e615T3J0u110P0/0Q0Q1i665f1=10040Z3V0L6n0L621=5~040,0X6g5|643B6w5q2k0f110A0A2_2K6F6A3w6j0C6K3Y0q6j0r0v0Q6v5@67016j0k3O6p6X0d110t3z0v0m0s6O3 6Z6#6q3J11151S2d0S6/4d6j0W6l4O6o736$6h0|6Q6^6T6V346X0j110U6}396)6+6-6=7d110!7m763x7j1.7l72746n6?0178046S6U7h1=7e047g6W7r6(7C0m6`0d6|4H755|7H7p7S7z7M6_6*7Q3V06737z6s6u7F0|6y6p7K5|0X6D046F0r2#6J7;6B6M7-7A6R7a806 714~7x7y6X6s0F7b3i7T6B7B7D8d3t7z7H7J7c7L6^7O7#7R328f3w0j6y0F1y7X8a69040(1i0v8411864j88747*112Q0S6-0d7q5|0d0q6^2#8I046N7}3w8h838%3Y8m807M6*7u6.8+6:110W6m888O048Q8S8U6B8W8Y8=8o5|7 8?4d8)7E982j8-9c3n7t6,945X6X6 908w110O9n3Y0r2g042h0w020h0S1p019r3 7H9q8B7L8X7C8Z9f0|97958g829b9P9o7I8.8q7P8t9k7r9m4O064 3 6s609M017/8.8D0i2m8!8K4r7)8a117,9-9/9-7?6E6G0d6I0A8!8$9T6P9R8j2W7z858`7x7z9aac5{6B9ea9466^0j170-9D4d7Vau2j0H8D8F2-7%9`7r7+0vak7z9 ao4m0X111x0S0A0t0F0,a780aj8!70ag8N9{8}0-8 9H5|aX9-an9!8Vaqas9Z3t8v8,8y8A8u7*aA8GaD6o8|9}aL6365a07@7_7{a69-9Oa/9Q799Sbe6L8^9^3F8M8|8~0s8Ta*919J7`9j8k9l11a8biaabgaI7n9V9-7Zar2za?adby048_9%aE5|aGbE7raKbB46aN041s0)9?bcbzaWab8!6!bs3RaO1.2z7$b(bObl12bn6%112{0m0t0v0o0m0A180:6ebra|bF7Wc98p046bc66fb@bAbxcd6T1s2nbLalbj04b-cca+b+a-7f9W7CbJatb@bP878{6Xa,b47GcybHa;bKaxcK04cb8e7Yb}0jb c1c3c56dch4~7(b1a$b3bX4dbWck8VbZ0,b$1.aV9-cIc,2jaf7waha$8ccP0|8xcVcpa^3 c`c/amcLcJ6@b!7`aRaT8HciaZc~8Md74m11c!c7d201awb.bC7C8*dddudcc{9gcAa=a!b{clb;codtdvcu91dq6cdscxbGdA8/7kbwbmdn897rd9bM7ra.dab/dFcOdw9E7odt7Mdrc$dDd3dCd+4W9X8sdHcGaF8Pa(bqd=b:cnb?cFc e2b!0;djdA6jb_c(d!boe4c8cT8C11aBef5M0T5_5;5Yew0T5#1z0S5%eB2$2Y20222!0o1-ey5#1Fcq3Y2Q0f0A0X0o0H0v0A0Y0V111r1t1v1x0Lb_1I3jeZ0LaT0|bp0d0w2{2-1*eva%8Rbq0Ler1ze{050o3w0Yc10,0s2,5~0L0Y2Q0X0|03e=e@8G2h0~0S1.0|0i0v3#2`0S0Lfa110a0c1z0o2XeZ3j1G0*2d0=0^0L0f0#275+6pe{c=b%e{0kfv1/5^5+ed6S0Z0Le=e a eufY0L0d00aP0L2c0=0d0#0u1x0r0/2Qf:7O0re(062J0L0m1j0o0)0)6T0L2N0X1i2S0F1if,1/6S0L0Sfr0f2_1/f;f:19g31jfX5`e=f1fYfUfJ8:9i13e{f0f*5`0Lf/c20Sar0o0~e(b=fu2Q0d0t0j0G0#0v7J1P1K040Df.0Efr0u0Ff^6pf4fdaH0|0U0U0T2weX0oc00u0A1$7`0v0T110e2m0L0Ngr0s0~0sga00g41/h0gl0?0Y0/f?djfBf:2F2HgjfJ2Q2 0#6S7QgOgf2Mhe2-0Lg`h9gthg8zhi0uhk2_gYg!3jez0-6c0r04.