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

.128013s3o_;8bcdufvgM/0lyàq n7apS.r1LF-meh,(P2=4:+Ntwki9D5Rx)é6050j0I0T0y0W0r0b0v0i0r0y0b0b0O010T0W0z010406050b0k0H0H0y0C0s040A0d0r0k0|0d0w0v020y0H0z0f0v0!0I160C0u0k0I0b050p13151719110z041x1E051H0p1H1J1E110j0W0m0;0?0^0`0J0W0n0J0r1X0J0T0 050,0h0r0I1S0@0_011W1Y1!1Y0T1*1,1(0T0h0d0j191)0C1F0T0J0;1c0b0z0y0w0`0N011.1U010l0.0I0w1k0I1(292b2g1:2j1,2m0H2o040a0v0M0C0d0z0d0b0W1f1h0*270C0C0I0i2J1x2q0w1F0p252V0T2322240j2s0`1!0w2l2G1(1P1R0=1/2)0W2+0w1 1Q1(0z2O1F2T2V30122a1h2;2h2_0C160r0 0v0D2S3410332r361:383a3c0N3f2b3h2T2(013m0y3b040v0c3q2U113t3k0`3w3y0v0P3C3s343u3I3c0Z3M3E3O3G3v0d393x3c0(3T3i351T3l3Y3n3z0x3%3F3*3H3,3!3z0g3:3V3=3X3Z3J0X3{3j3}3Q040D0q423)2=3~3-0D3e1y3g3U434b450D3p4g3r4i4a373@3y0D3B4o3D3(3P4t0 0D3L4x3N4j4s3 4C3S4F4q4A4J463$4M4z3W4l3/4S3;4k4B463`4X3|4Z4P0D414%4H3+4P0N484-4r4/3-0N4f304N4U4!0N4n4|4T444 4w524Y4I4_4E574(593^0N4L5c4.3?4:4R5i4@5k4_4W5n4O4_4$5s4~4:4,5w544P0c4=5A4)3-0c4{4h535G3^0c515K584^5N563g1G2~1x2/2Y0j2$3u0i1 2y0)1Q1F2}0I2 5V4F055(0*5:5j010V0 3k3M5L2h0U3c5 5R3H0i0 0o0-0r0r1g645d1:0~040Q3T0v6l0v601:5|040*0l6e5`623z6u5o2i0H0 0e0e2@2I6D6y3u6h0L6I3W0h6h0b0I0r6t5=65016h0K3M6n6V0w0 0m3x0I0k0C6M3}6X6Z6o3H0 131Q2b0T6-4b6h0$6j4M6m716!6f0`6O6?6R6T326V0d0 0B6{376%6)6+6:7b0 0O7k743v7h1,7j70726l6;0176046Q6S7f1:7c047e6U7p6$7A0k6^0w6`4F735`7F7n7Q7x7K6@6(7O3T06717x6q6s7D0`6w6n7I5`0l6B046D0b2Z6H7/6z6K7+7y6P787~6}6 4|7v7w6V6q0W793g7R6z7z7B8b3r7x7F7H7a7J6?7M7Z7P308d3u0d6w0W1w7V8867040S1g0I820 844h86727(0 2O0T6+0w7o5`0w0h6?2Z8G046L7{3u8f818#3W8k7~7K6(7s6,8)6.0 0$6k868M048O8Q8S6z8U8W8:8m5`7}8;4b8%7C962h8+9a3l7r6*925V6V6}8~8u0 0R9l3W0b2e042f0G020n0T1n019p3}7F9o8z7J8V7A8X9d0`95938e80999N9m7G8,8o7N8r9i7p9k4M064}3}6q5~9K017-8,8B0M2k8Y8I4p7%880 7*9+9-9+7;6C6E0w6G0e8Y8!9R6N9P8h2U7x838^7v7x98aa5_6z9ca7446?0d150+9B4b7Tas2h0V8B8D2+7#9^7p7)0Iai7x9}am4k0l0 1v0T0e0m0W0*a57~ah8Y6~ae8L9_8{0+8}9F5`aV9+al9Y8Taoaq9X3r8t8*8w8y8s7(ay8EaB6m8`9{aJ61639~7=7@7_a49+9Ma-9O779Qbc6J8?9?3D8K8`8|0C8Ra(8 9H7^9h8i9j0 a6bga8beaG7l9T9+7Xap2xa;abbw048@9#aC5`aEbC7paIbz44aL041q0z9;babxaUa98Y6Ybq3PaM1,2x7!b$bMbj10bl6#0 2_0k0m0I0y0k0e160.6cbpa`bD7Uc78n0469c46db=bybvcb6R1q2lbJajbh04b+caa)b)a+7d9U7AbHarb=bN858_6Va*b27EcwbFa/bIavcI04c98c7Wb{0db}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 azed5K0p5@5/5Weu0p5Z1x0T5#ez2!2W1~202Y0y1+ew5Z1Dco3W2O0H0e0l0y0V0I0e0J0c0 1p1r1t1v0vb@1G3h1E0Y2b0:0?0v0H0%255)6net6r0Ic;dhe`0K0v1,e_5)eb6Q0Q0vbn1hep1xe`0v0w00aN0v2a0:0w0%0i1v0b0-2Ofi7M0be$0v2H0v0k1h0y0z0z6R0v2L0l1g2Q0W1gfe1-6Q0v0T0I392@1-fjfi17fy1h5?f4f9fcf4f0e:8.9gf35^fbesf40vfhc00Tap0y0|e$b:0Tf82l0m0d0s0%0I7H1N1I040Efg0#fR0i0Wfn6n0y0v0J2O0l0`0B0B0p2ueV0yb~0i0e1!7^0I0p0 0F2k0v0tfW0C0|0CfF00fz1-gxfQ0;0J0-fldh0y3z2}2E2GgNgi2O2}0%6Q7Of`fK2KgL2+0vgrgGfYgN8xgP0igR2@g4g63hex0+6a0b04.

###(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

.65038.128013.9875s3_8ufvy n7aS1me(P24:twiDh)6o;bcdgM/0làqp.rLF-,=+Nk95Rxé050J0s0y0o0A0O0d0l0I0O0o0d0d0Y010y0A0R010406050d0h0r0r0o0T0k040p0F0O0h0~0F0m0l020o0r0R0G0l0(0s180T0Q0h0s0d050M1517191b130R041z1G051J0M1J1L1G130J0A0j0?0^0`0|0C0A0K0C0O1Z0C0y11050.0H0O0s1U0_0{011Y1!1$1!0y1,1.1*0y0H0F0J1b1+0T1H0y0C0?1e0d0R0o0m0|0v011:1W010i0:0s0m1m0s1*2b2d2i1=2l1.2o0r2q040b0l0u0T0F0R0F0d0A1h1j0,290T0T0s0I2L1z2s0m1H0M272X0y2524260J2u0|1$0m2n2I1*1R1T0@1;2+0A2-0m211S1*0R2Q1H2V2X32142c1j2?2j2{0T180O110l0q2U3612352t381=3a3c3e0v3h2d3j2V2*013o0o3d040l0e3s2W133v3m0|3y3A0l0w3E3u363w3K3e0%3O3G3Q3I3x0F3b3z3e0E3V3k371V3n3!3p3B0n3)3H3,3J3.3$3B0g3=3X3@3Z3#3L0$3}3l3 3S040q0N443+2@403/0q3g1A3i3W454d470q3r4i3t4k4c393_3A0q3D4q3F3*3R4v110q3N4z3P4l4u414E3U4H4s4C4L483(4O4B3Y4n3;4U3?4m4D483|4Z3~4#4R0q434)4J3-4R0v4a4/4t4;3/0v4h324P4W4$0v4p4~4V46514y544!4K4{4G594*5b3`0v4N5e4:3^4=4T5k4_5m4{4Y5p4Q4{4(5u504=4.5y564R0e4@5C4+3/0e4}4j555I3`0e535M5a4`5P583i1I301z2;2!0J2(3w0I212A0+1S1H2 0s315X4H055*0,5=5l010#113m3O5N2j0z3e615T3J0I110L0/0O0O1i665f1=10040x3V0l6n0l621=5~040,0i6g5|643B6w5q2k0r110f0f2_2K6F6A3w6j0t6K3Y0H6j0d0s0O6v5@67016j0X3O6p6X0m110j3z0s0h0T6O3 6Z6#6q3J11151S2d0y6/4d6j0D6l4O6o736$6h0|6Q6^6T6V346X0F110S6}396)6+6-6=7d110Y7m763x7j1.7l72746n6?0178046S6U7h1=7e047g6W7r6(7C0h6`0m6|4H755|7H7p7S7z7M6_6*7Q3V06737z6s6u7F0|6y6p7K5|0i6D046F0d2#6J7;6B6M7-7A6R7a806 714~7x7y6X6s0A7b3i7T6B7B7D8d3t7z7H7J7c7L6^7O7#7R328f3w0F6y0A1y7X8a69040!1i0s8411864j88747*112Q0y6-0m7q5|0m0H6^2#8I046N7}3w8h838%3Y8m807M6*7u6.8+6:110D6m888O048Q8S8U6B8W8Y8=8o5|7 8?4d8)7E982j8-9c3n7t6,945X6X6 908w110Z9n3Y0d2g042h0W020K0y1p019r3 7H9q8B7L8X7C8Z9f0|97958g829b9P9o7I8.8q7P8t9k7r9m4O064 3 6s609M017/8.8D0u2m8!8K4r7)8a117,9-9/9-7?6E6G0m6I0f8!8$9T6P9R8j2W7z858`7x7z9aac5{6B9ea9466^0F170-9D4d7Vau2j0#8D8F2-7%9`7r7+0sak7z9 ao4m0i111x0y0f0j0A0,a780aj8!70ag8N9{8}0-8 9H5|aX9-an9!8Vaqas9Z3t8v8,8y8A8u7*aA8GaD6o8|9}aL6365a07@7_7{a69-9Oa/9Q799Sbe6L8^9^3F8M8|8~0T8Ta*919J7`9j8k9l11a8biaabgaI7n9V9-7Zar2za?adby048_9%aE5|aGbE7raKbB46aN041s0R9?bcbzaWab8!6!bs3RaO1.2z7$b(bObl12bn6%112{0h0j0s0o0h0f180:6ebra|bF7Wc98p046bc66fb@bAbxcd6T1s2nbLalbj04b-cca+b+a-7f9W7CbJatb@bP878{6Xa,b47GcybHa;bKaxcK04cb8e7Yb}0Fb 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!boe4c8cT8C11aBef5M0M5_5;5Yew0M5#1z0y5%eB2$2Y20222!0o1-ey5#1Fcq3Y2Q0r0f0i0o0#0s0f0C0e111r1t1v1x0lb_1I3jeZ0laT0|bp0m0W2{2-1*eva%8Rbq0ler1ze{050o3w0Cc10,0T2,5~0l0C2Q0i0|03e=e@8G2h0~0y1.0|0u0s3#2`0y0lfa110c0a1z0o2XeZ3j1G0B2d0=0^0l0r0*275+6pe{c=b%e{0Xfv1/5^5+ed6S0x0le=e a eufY0l0m00aP0l2c0=0m0*0I1x0d0/2Qf:7O0de(062J0l0h1j0o0R0R6T0l2N0i1i2S0A1if,1/6S0l0yfr0r2_1/f;f:19g31jfX5`e=f1fYfUfJ8:9i13e{f0f*5`0lf/c20yar0o0~e(b=fu2Q0m0j0F0k0*0s7J1P1K040Uf.0)fr0I0Af^6pf4fdaH0|0S0S0M2weX0oc00I0f1$7`0s0M110V2m0l0Pgr0T0~0Tga00g41/h0gl0?0C0/f?djfBf:2F2HgjfJ2Q2 0*6S7QgOgf2Mhe2-0lg`h9gthg8zhi0Ihk2_gYg!3jez0-6c0d04.