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

.9875.65038.128013bq,9vià3o_x;Mlpwf( g06-)2s1+8ené4m5tLRPhkN:c.a=ryDFSu/7d050*0G0M0W0i0q0C0v0U0q0W0C0C0X010M0i0r010406050C0%0K0K0W0Y0Z040$0l0q0%0~0l0H0v020W0K0r0o0v0O0G180Y0e0%0G0C050(1517191b130r04051G1z1J0(1G130*0i0h0?0^0`0|0Q0i0w0Q0q1X0Q0M11050.0d0q0G1S0_0{011W1Y1!1Y0M1*1,1(0M0Y1H0M0Q0?1e0C0r0W0H0|0B011.1U010t0:0G0H1m0G1(24262b1:2e1,2h0K2j040c0v0P0Y0l0r0l0C0i1h1j0,220Y0Y0G0U2E1z2l0H1H0(202Q1}1 1~1)0*2n0|1!0H2g2B1(1P1R0@1/2!0i2$0H0l2*1(0r2J1H2O2Q2{14251j2,2c2;0Y180q110v0D2N2 122~2m311:3335370B3a263c2O2Z013h0W36040v0k3l2P133o3f0|3r3t0v0J3x3n2 3p3D370L3H3z3J3B3q0l343s370y3O3d301T3g3T3i3u0)3Y3A3#3C3%3V3u0F3+3Q3-3S3U3E0g3?3e3^3L040D0x3}3!2-3_3(0D391A3b3P3~46400D3k4b3m4d45323/3t0D3w4j3y3Z3K4o110D3G4s3I4e4n3`4x3N4A4l4v4E413X4H4u3R4g3*4N3,4f4w413=4S3@4U4K0D3|4Y4C3$4K0B434(4m4*3(0B4a2{4I4P4V0B4i4@4O3 4`4r4}4T4D4;4z524Z543:0B4G574)3.4+4M5d4/5f4;4R5i4J4;4X5n4_4+4%5r4 4K0k4-5v4!3(0k4?4c4~5B3:0k4|5F534:5I513b1K2_1z2*2T0*1 2Y3R0U2=2t0+1Q1H2^0G2`5Q4A055!0,5,5e010R113f3H5G2c0s375{5M3C0U110p0/0q0q1i60581:10040T3O0v6h0v5|1:5^040,0t6a5?5~3u6q5j2d0K110m0m2/2D6z6u3p6d0u6E3R0d6d0C0G0q6p5.61016d0f3H6j6R0H110h3s0G0%0Y6I3^6T6V6k3C11151Q260M6)466d0A6f4H6i6}6W6b0|6K6/6N6P2}6R0l110V6@326Z6#6%6,77110X7g703q7d1,7f6|6~6h6-0172046M6O7b1:78047a6Q7l6Y7w0%6;0H6?4A6 5?7B7j7M7t7G6:6!7K3O066}7t6m6o7z0|6s6j7E5?0t6x046z0C1}6D7+6v6G7%7u6L747`6_6{4@7r7s6R6m0i753b7N6v7v7x873m7t7B7D767F6/7I7V7L2{893p0l6s0i1y7R8463040S1i0G7~11804c826~7!112J0M6%0H7k5?0H0d6/1}8C046H7@3p8b7}8X3R8g7`7G6!7o6(8#6*110A6g828I048K8M8O6v8Q8S8,8i5?7_8-468Z7y922c8%963g7n6$8~5Q6R6_8`8q110E9h3R0C2904021v0l0M1p0z020w9t1k9r9t9l3^7B9k8v7F8R7w8T990|918 8a7|959O9i7C8(8k7J8n9e7l9g4H064^3^6m5`9L017)8(8x0P2f8U8E4k7Z84117$9,9.9,7-6y6A0H6C0m8U8W9S6J9Q8d2P7t6+9G8P11180:688N9,7P7`0R8x8z2$8U6`8;7r7t94ab5=6v98a83 6/0l170-9C46anaf8{ah66ak7X9_7l7#0Gaz7t9~aD4f0t111x0M0m0h0i0,a67`ayat9@3y8G8?8^0Yal8oaxaa7`aC9Zag7waG2s9Y3m8p8$8s8ua{8w11ar8B9$aS5?aUaW6RaYb06va07/0m7;0Y7?aZ2c9Nbn8Ya}9,7 av8H9`8@0-8_aM3K9Ibsa-9,a/am799Vb2aHb5ac9f8/aR6i8?9|bv1:bm8e6Xa#041s0r9=bB11a7bya9739Rb@8.046UbJ4Pa$1,2s7Wb;04au7qaw6X112;0%0h0G0W0%0mai6769b 9D7iaJ7c0465ajclb%9Mb=bS6N1s2gbVaA6F11b~bb7lbPcv01a b*8jbTb4atbDbh9Pb_bk7lcMbWcO0Cb3aIcmaKcoc(cqcccecgciaPcu4c7Yb!bFb$b{46b)cZ8Pb,0,b/1,bNcKcJc{bw8/a;12a?bF86cp7A6s2;cCb73^d6cN7ObR9,7Ga%a)a+bfcK6Gc7818Gc^cOcjaQc+7Ac*cH5?dmc~aBdpcK7Tc$cCc@dAdk4fc1cAc4dIdM047QdZ3KaOcta`d7dG9Udq9b7pdzdTa|cVa~dNd,6.cPc%d%8$dH887Sd)ckd+dnd!8hd{7m7H9XcS8=bFa^e62PdUcqczc3dRdcaTc16M9?eec9eqbG8La_df0|apbd8A3Y0(5:5+5ReI0(5U1z0M5WeN2W2R0W1+eK5U1FcD3R2J0K0m0t0W0R0G0m0Q0k111r1t1v1x0vda1K3ce,0va+0|eh0z2;2$1(eHex8M0vbe1zf3050W3p0Qcf0,0Y2#5^0v0Q2J0t0|03e~f02j0v0~0M1,0|0P0G3U2:0M0vfh110a0b1z0W2Qe,3c1G0!260=0^0v0K0I205#6jf3d1b:f30ffC1-5/5#b-0;0G0T0vehf6eEeGf)0v0H00a%0v250=0H0I0U1x0C0/2Jf{7I0Ce;062C0v0%1j0W0r0r6N0v2G0t1i2L0i1if@1-6Mfsfy0K2/1-f|f{19gb1jf(5;ehf8f)f#fQ8*9c13f3f7f=5;0vf`cg0MaG0W0~e;enf.2g0h0l0Z0I0G7D1N1I040Nf_0nfy0U0ig06jfbfkaV0|0V0V0(2pe*0Wce0U0m1!7;0G0(110#2f0v0jgy0Y0~0Ygi00gc1-h60M1-0U0Q0/f~bffIf{2y2AgrfQ2J2^0I6M7KgVgn2Fhk2$0vh0hfgAhm8tho0?hr2/g(g*3ceL0-660C04.

###(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.65038.128013bq,9vià3o_x;Mlpwf( g06-)2s1+8ené4m5tLRPhkN:c.a=ryDFSu/7d050*0G0M0W0i0q0C0v0U0q0W0C0C0X010M0i0r010406050C0%0K0K0W0Y0Z040$0l0q0%0~0l0H0v020W0K0r0o0v0O0G180Y0e0%0G0C050(1517191b130r04051G1z1J0(1G130*0i0h0?0^0`0|0Q0i0w0Q0q1X0Q0M11050.0d0q0G1S0_0{011W1Y1!1Y0M1*1,1(0M0Y1H0M0Q0?1e0C0r0W0H0|0B011.1U010t0:0G0H1m0G1(24262b1:2e1,2h0K2j040c0v0P0Y0l0r0l0C0i1h1j0,220Y0Y0G0U2E1z2l0H1H0(202Q1}1 1~1)0*2n0|1!0H2g2B1(1P1R0@1/2!0i2$0H0l2*1(0r2J1H2O2Q2{14251j2,2c2;0Y180q110v0D2N2 122~2m311:3335370B3a263c2O2Z013h0W36040v0k3l2P133o3f0|3r3t0v0J3x3n2 3p3D370L3H3z3J3B3q0l343s370y3O3d301T3g3T3i3u0)3Y3A3#3C3%3V3u0F3+3Q3-3S3U3E0g3?3e3^3L040D0x3}3!2-3_3(0D391A3b3P3~46400D3k4b3m4d45323/3t0D3w4j3y3Z3K4o110D3G4s3I4e4n3`4x3N4A4l4v4E413X4H4u3R4g3*4N3,4f4w413=4S3@4U4K0D3|4Y4C3$4K0B434(4m4*3(0B4a2{4I4P4V0B4i4@4O3 4`4r4}4T4D4;4z524Z543:0B4G574)3.4+4M5d4/5f4;4R5i4J4;4X5n4_4+4%5r4 4K0k4-5v4!3(0k4?4c4~5B3:0k4|5F534:5I513b1K2_1z2*2T0*1 2Y3R0U2=2t0+1Q1H2^0G2`5Q4A055!0,5,5e010R113f3H5G2c0s375{5M3C0U110p0/0q0q1i60581:10040T3O0v6h0v5|1:5^040,0t6a5?5~3u6q5j2d0K110m0m2/2D6z6u3p6d0u6E3R0d6d0C0G0q6p5.61016d0f3H6j6R0H110h3s0G0%0Y6I3^6T6V6k3C11151Q260M6)466d0A6f4H6i6}6W6b0|6K6/6N6P2}6R0l110V6@326Z6#6%6,77110X7g703q7d1,7f6|6~6h6-0172046M6O7b1:78047a6Q7l6Y7w0%6;0H6?4A6 5?7B7j7M7t7G6:6!7K3O066}7t6m6o7z0|6s6j7E5?0t6x046z0C1}6D7+6v6G7%7u6L747`6_6{4@7r7s6R6m0i753b7N6v7v7x873m7t7B7D767F6/7I7V7L2{893p0l6s0i1y7R8463040S1i0G7~11804c826~7!112J0M6%0H7k5?0H0d6/1}8C046H7@3p8b7}8X3R8g7`7G6!7o6(8#6*110A6g828I048K8M8O6v8Q8S8,8i5?7_8-468Z7y922c8%963g7n6$8~5Q6R6_8`8q110E9h3R0C2904021v0l0M1p0z020w9t1k9r9t9l3^7B9k8v7F8R7w8T990|918 8a7|959O9i7C8(8k7J8n9e7l9g4H064^3^6m5`9L017)8(8x0P2f8U8E4k7Z84117$9,9.9,7-6y6A0H6C0m8U8W9S6J9Q8d2P7t6+9G8P11180:688N9,7P7`0R8x8z2$8U6`8;7r7t94ab5=6v98a83 6/0l170-9C46anaf8{ah66ak7X9_7l7#0Gaz7t9~aD4f0t111x0M0m0h0i0,a67`ayat9@3y8G8?8^0Yal8oaxaa7`aC9Zag7waG2s9Y3m8p8$8s8ua{8w11ar8B9$aS5?aUaW6RaYb06va07/0m7;0Y7?aZ2c9Nbn8Ya}9,7 av8H9`8@0-8_aM3K9Ibsa-9,a/am799Vb2aHb5ac9f8/aR6i8?9|bv1:bm8e6Xa#041s0r9=bB11a7bya9739Rb@8.046UbJ4Pa$1,2s7Wb;04au7qaw6X112;0%0h0G0W0%0mai6769b 9D7iaJ7c0465ajclb%9Mb=bS6N1s2gbVaA6F11b~bb7lbPcv01a b*8jbTb4atbDbh9Pb_bk7lcMbWcO0Cb3aIcmaKcoc(cqcccecgciaPcu4c7Yb!bFb$b{46b)cZ8Pb,0,b/1,bNcKcJc{bw8/a;12a?bF86cp7A6s2;cCb73^d6cN7ObR9,7Ga%a)a+bfcK6Gc7818Gc^cOcjaQc+7Ac*cH5?dmc~aBdpcK7Tc$cCc@dAdk4fc1cAc4dIdM047QdZ3KaOcta`d7dG9Udq9b7pdzdTa|cVa~dNd,6.cPc%d%8$dH887Sd)ckd+dnd!8hd{7m7H9XcS8=bFa^e62PdUcqczc3dRdcaTc16M9?eec9eqbG8La_df0|apbd8A3Y0(5:5+5ReI0(5U1z0M5WeN2W2R0W1+eK5U1FcD3R2J0K0m0t0W0R0G0m0Q0k111r1t1v1x0vda1K3ce,0va+0|eh0z2;2$0m0D1(eHex8M0vbe1zf5050W3p0Qcf0,0Y2#5^0v0Q2J0t0|03e~f0e*f30v0~0M1,0|0P0G3U2:0M0vfj110a0b1z0W2Qe,3c1G0!260=0^0v0K0I205#6jf5d1b:f50ffF1-5/5#b-0;0G0T0vehf8eEeGf,0v0H00a%0v250=0H0I0U1x0C0/2Jf~7I0Ce;062C0v0%1j0W0r0r6N0v2G0t1i2L0i1if`1-6MfvfB0K2/1-f f~19ge1jf+5;ehfaf,f(fT8*9c13f5f9f^5;0vf}cg0MaG0W0~e;enf;2g0h0l0Z0I0G7D1N1I040Nf|0nfB0U0ig36jfdfmaV0|0V0V0(2pe*0Wce0U0m1!7;0G0(110#2f0v0jgB0Y0~0Ygl00gf1-h90M1-0U0Q0/g1bffLf~2y2AgufT2J2^0I6M7KgYgq2Fhn2$0vh3higDhp8thr0?hu2/g+g-3ceL0-660C04.