Aller au contenu

File avec deux piles⚓︎

On choisit d'implémenter une file à l'aide d'un couple [p1,p2]p1 et p2 sont des piles. Ainsi file[0] et file[1] sont respectivement les piles p1 et p2.

Pour enfiler un nouvel élément valeur dans file, on l'empile dans p1.

enfiler

Pour défiler file, deux cas se présentent :

  • La pile p2 n'est pas vide : on dépile p2.

enfiler

  • La pile p2 est vide : on dépile les éléments de p1 en les empilant dans p2 jusqu'à ce que p1 soit vide, puis on dépile p2.

enfiler

La structure de pile est utilisable au travers de leur interface constituée des fonctions suivantes :

  • cree_pile_vider : renvoie une pile vide
  • depiler : prend en paramètre une pile et renvoie une nouvelle pile où on a supprimé l'ancien sommet
  • empiler : prend un element quelconque et une pile et renvoie une nouvelle pile où element est le sommet.
  • est_pile_vide : prend en paramètre une pile et renvoie True si la pile est vide
  • lire_sommet : prend en paramètre une pile et renvoie la valeur stockée au sommet d'une pile NON VIDE
Python Console Session
1
2
3
4
5
6
7
8
>>> ma_pile = creer_pile_vide()
>>> est_pile_vide(ma_pile)
True
>>> empiler(5, ma_pile)
>>> empiler(4, ma_pile)
>>> lire_sommet(ma_pile)
4
>>> depiler(ma_pile)

A partir des opérations sur les piles fournis dans le module, écrire en Python les fonctions suivantes :

  • une fonction creer_file_vide() qui renvoie une file vide de tout élément.
  • une fonction est_vide(file) qui prend en argument une file et qui renvoie True si la file est vide, False sinon.
  • une fonction enfiler(file, valeur) qui prend en arguments une file et un élément valeur et qui ajoute valeur en queue de la file.
  • une fonction defiler(file) qui prend en argument une file et qui renvoie l'élément en tête de la file en le retirant.

On doit utiliser exclusivement les fonctions fournies. Aucune connaissance de la manière dont sont stockées les valeurs de la pile n'est nécessaire.

###(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 : 5/5
.128013Ait3a;dv,nDT2.SR5éwbcy14: f-up08)_j9eklohrP=[sà6(]/mg7050h0L0d0f0c0N0U0A0v0N0f0U0U0S010d0c0E010406050U0D0!0!0f0Q0w040p0O0N0D0`0O0k050Z111315170 0E04051n1g1q0Z1n0 0h0c0i0/0;0?0^0;0k0#0D0f0#0L0C0E0w0d0P1e0A0P0c0#0P0N1S0P0d0}050*0u0N0L1z0=0@011R1T1V1T0d1#1%1Z0d0Q1o1N0/1a0U0E0f0k0^0n011)1B010B0,0L0k0f0!0L1Z1~20251+281%2b2d0}0a0A0R0Q0O0E0O0U0c1d0k0A0(1|0Q0Q0L0v2y1g2g0k1o0Z1N2L1^1`1_1!0h2i1C0c0k2a2v1Z1w1y0:1*2V2X0k0O2#1Z0E2E1o2J2L2=101 2z2%262+0Q140N1Z0f1Q2E0B0^030I0I0v2,0L1V2*0O0C0x3g0}0A0x1g0f2?2_0~2^2h2{1+2}2 31330L350137393b3d2Y3g0C23040A0n3m3o203q2J2U013v0f301o320P3436383a0(3F2+3H0e3j0e3N2I3p0 3R3t0^3U3W053Y3!3B3$3E2W3G3h0y3j0y3/1h3;3r2`1A3u0O2~3V3x3Z3z3#3D3(413*3h0r3j0r472=3=2_3S3_4h3}3C3%3c4n3f3h0W3j0W4t493?4c3^4e3w3X3y3A4B403e3H0$3j0$4K3P4v3s4N3T4P4g4R4i4T3 4m4W3h0G3j0G4#2K4%4b2(4*4f3`3|4j3~4l4D4=0C0K3j0K4`3Q4w3@4 4Q3{4S4k4C3)4F3g0F0}0x0F5c4|4x4+515j545l4E3H0x0x5q3l0Z3n3:4$4a5v504z534U4;423g3J0x3M5H3O4{5L5f4y4-4A4:565S0x3,045,5t5!4)5$5i4.5k4V5+445.465X5J5Z4M4~5?524/555m5C4q5.4s5 485K622|5w5O665A570x4H5.4J6d4u5;636i5%5P5)683h0x4Y5.4!6r4L5e5=6v5@5(675B6A4@5.4_6F6f6H6u5N6w6k5`4o3g595.5b6S616U6h6W6K6x6M570n5p046=5:6g4d6-655_5R6!0n5E6@5G5I6e6*4(6V5h6}5z6Z5n0n3J7f6_6+6{7a5y5Q5*705-0n3.6)5d786,7l5^7c6 7e5|0n5~756s6`4O6|7m6y6N3I6a0n6c7F3p1r2:1g2#2O0h1`2T5f4C2!1x1o2/0L2;7S761o4C7,2h0c0h0^382J5C3x7?7^6:5+242m0L7~6l802L5I7H010M0}0(0B607;4}260t3j8f6t2|0B0}0v2E0L0Q0I2k0L0I0i7?0L8l890|040X0H0z8f0 7.5L7}017_2_3H3J5i8M7L6;812c838N7 701Z5 898j3K0A8+8B7j0^0U0h0}02030e0K0g8?8^8`8@8_0q2a0i0O0c1(0D2X0A8v0A8y0(8{8_9d8}8|8I8-7=7@8Z7`3h5-8S9l8U5S3,0A82847d3+8$3n8+8,898b042E0d0D0Q1f7.0A8m1+8D0T9j8h3u8p8r8t0E298x8z9S3S8D8F0j8f9N890k9V0L8s0I9Y1%9!0(9$5f9(0H0Y9i8K3R8T0I9n0C5|9q9x7A3H449v8Xa87o5na65X8J2@a19ra38P4p7|am856!4qac2dae6z0C6a3/9E8c3z9`4)8)9Na08.3T8o040L0U0d8u9Z9b8AaJ7v9P0}0XaF630}8va!268D8G9 ak4wa2a46oa78Zas5n4Hav8Y9s6!a;8%aKaH9Ca(1+8:8=8~9g9eb7900k92940A0m0Q0D1(2w0A0;98290AaO0d9a8z9fbub7a,7Sal7~a46Ca=a|5n4Ya`ax7MbC5X9C9,aK9F9H9J9L2=bNaW3^0}bq9=aS9#aV9T0^9(b3bW04a%b$9%0}9Rb.5f0!0c0}5sb=4)8D0Y0H9+9O0^0O8)200hc09-bXaPbZ9@aTb*01b)b{a#b,29ce9Qceb@5qcl0}b~bx3P8Lama46PbD8!5n4@bHa?9y4?9A3qb.a/ao58aqbI5759cDbE3H6$aBbOaD8ech8i8kcZ3uaM2a8v0Qcq8Ece9.cj1%c,9*9Mc13T0}0i3V0L9Jc,a+7.ajbya.cwcL5rcNcEa96A5pcRcA5C6?cVbV01b18,c$8/8;04bv8|9f0b0J0O1c1(0N9f0s0N0s2d0kbrc{1%9J0A0Vbl328vdqb99hd19$cK205C72cza@dV8Wawd9afdZ878*9DaKc/b-a-dicmdm01co04b`d/b%cfcrc7aK0O0}0Sd~dic/0Ecee0040oc.bX0!9?8sc,aZd=c/dGc}c+d=8Dc?bTc^d-ckenb:cnb^d^c,csdRcJd5dU6A8R32a2dYeFd!a{deeKd)d2cubz9md69peHarcF3g9u9wd$ay5,cHc^9F8dceaHc.aM8d29emd`b/c-eia$ete@9{0}d06seCbAd6a6eWcO5{eLf76!0xah88b03jb2d=b5dpb7dO0gct2Kcvf3eE3gaAf6e$7M0xaue#cS6AaAa difjbM0l0s99960AdAdC2abr2Bbmd.49f2eTfs6nd8fB3ga_fAeNf#e)89fG9Cbbbd1(0v0)fMdBdD0dfo8g0AdT0k5CbCfvf!6Bf9fw6mbKfefFdobMfm9ff`fqfWf~6OfZf(0xcCf%eJ3gcybLb2aC040ccYeqc804e6d=e8eae`aNcaee9^aUe}b|aYebc:gJd3d:evd=d@5GgK4~b}f0fUe@f}5CcUg1gkcQgneY0xcUgrbMd+di9F0t1Rc;c@89c30}2+f_g{d,0}gAgW26gCgNbYgHcdeue_h59UgOc,b;he0^d@d_gQd{gY8HeBg#eDgh3Idgg)go6=g4f!hzd)g;hEbUd{ejc|c~h1die8e2hLhHh3e70}gDhjc_041V2Ea30O130)eggNfTeRaKd;hVhlezb hrhnf|ht8QdWhxeY71hAf(h}hDhFbMere{g`hVh-h?b?exhmh+gR049~hP3ShNe3hQgzhSe9gN0(eee?i9gLhditcih*fp8CgSh.ibh:geeS8Ofs7fgjhy23ddiLcHi2i3gyiyf{e~04hiiw26gUezikiie1i$5#hRgBhTh8ede=h(gEekhKi70}ep3phG4xi5gPidhoiBiY1+i!hceAf1hsfrhu7riKh|e!adg55Sjci1g=il0fc{dEi)4)ijihi*imi,iogEhY8w0Uh#2dh0i^ivj0i}hghciXjHiacpj6h;j8h?g$3h7Djdda3Iabg,jXjVjki|juiTc^i8jM4)j5jFiggxd i(jt5=i+hVh7gEiqi:hcehhVesi6j3b(j2j-4~j/k5d|ifjQg!jSh^jUfuh@fa7efzjghBfD9BgscW9G0)bRjqcijn20jEkfcu0Z7:7T7+7V7(1g0d7YkK2R2M0f1$kH0Z7W8J0(0*0,0U04.