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
>>> 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)
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
.128013kp;n7=(32v[fahD1:-tS6àdRm0]jP)c.u8_swl,éA4obiery5Tg9/ 050x0U0t0n0T0M0K0$0F0M0n0K0K0g010t0T0c010406050K0H0z0z0n0V0W040u0R0M0H0`0R0e050#111315170 0c04051n1g1q0#1n0 0x0T0k0/0;0?0^0;0e0Z0H0n0Z0U0s0c0W0t0o1e0$0o0T0Z0o0M1S0o0t0}050*0S0M0U1z0=0@011R1T1V1T0t1#1%1Z0t0V1o1N0/1a0K0c0n0e0^0j011)1B010m0,0U0e0n0z0U1Z1~20251+281%2b2d0}0a0$0D0V0R0c0R0K0T1d0e0$0(1|0V0V0U0F2y1g2g0e1o0#1N2L1^1`1_1!0x2i1C0T0e2a2v1Z1w1y0:1*2V2X0e0R2#1Z0c2E1o2J2L2=101 2z2%262+0V140M1Z0n1Q2E0m0^030J0J0F2,0U1V2*0R0s0q3g0}0$0q1g0n2?2_0~2^2h2{1+2}2 31330U350137393b3d2Y3g0s23040$0j3m3o203q2J2U013v0n301o320o3436383a0(3F2+3H0i3j0i3N2I3p0 3R3t0^3U3W053Y3!3B3$3E2W3G3h0Q3j0Q3/1h3;3r2`1A3u0R2~3V3x3Z3z3#3D3(413*3h0X3j0X472=3=2_3S3_4h3}3C3%3c4n3f3h0v3j0v4t493?4c3^4e3w3X3y3A4B403e3H0f3j0f4K3P4v3s4N3T4P4g4R4i4T3 4m4W3h0I3j0I4#2K4%4b2(4*4f3`3|4j3~4l4D4=0s0!3j0!4`3Q4w3@4 4Q3{4S4k4C3)4F3g0A0}0q0A5c4|4x4+515j545l4E3H0q0q5q3l0#3n3:4$4a5v504z534U4;423g3J0q3M5H3O4{5L5f4y4-4A4:565S0q3,045,5t5!4)5$5i4.5k4V5+445.465X5J5Z4M4~5?524/555m5C4q5.4s5 485K622|5w5O665A570q4H5.4J6d4u5;636i5%5P5)683h0q4Y5.4!6r4L5e5=6v5@5(675B6A4@5.4_6F6f6H6u5N6w6k5`4o3g595.5b6S616U6h6W6K6x6M570j5p046=5:6g4d6-655_5R6!0j5E6@5G5I6e6*4(6V5h6}5z6Z5n0j3J7f6_6+6{7a5y5Q5*705-0j3.6)5d786,7l5^7c6 7e5|0j5~756s6`4O6|7m6y6N3I6a0j6c7F3p1r2:1g2#2O0x1`2T5f4C2!1x1o2/0U2;7S761o4C7,2h0T0x0^382J5C3x7?7^6:5+242m0U7~6l802L5I7H010b0}0(0m603K6t2|0m0}0F2E0U0V0J2k0U0J0k7?0U8f8h1+0|040h0E0r8f0 7.5L7}017_2_3H3J5i8I7L6;812c838J7 701Z5 890L3j0$8%8w890K0x0}02030i0!0d8.8:8=8/8;0y2a0k0R0T1(0H2X0$8q0$8t0(8?8;988^8@8E8)4w8P0J7`3h5-8O7@8V856!3,0$82847d3+8Y3n8%8(898b042E0t0H0V1f7.0$8x0^8z0l9e7v3u8k8m8o0c298s8u9O4}268z8B0N8f9J890e9R0U8n0J9U1%9W0(9Y3S9#0E0B9d8G3R9g9i0s5|9l9t7A3H449r8Ta47o5na25X8F2@9~9m8K203H6aa39n9u4p8S2daa6z0sam8Z7j0^9B8d9(9K3T8j040U0K0t8p9V968v9}ay019#9@5#0}8qaS4)8z8C9|ag9fai9h8L4G7|a%9o5n4Ha8asaoa5a*877;9Z1+8#3K9yaW4~8+8-8_9b99b38{0e8}8 0$0Y0V0H1(2w0$0;93290$aH0t958u9abqb3a!7Sah7~a06Can8Q5S4Ya:8UbA6!by5X9y9)aP9B9D9F9H2=bK9P3^0}bm9/aL9XaObSaQ0}0ha 2|aU29b(8y0}9NbZa`0^0z0T0}5sb:9^0}0B0EaC890Ra|200xb aP9+aGaIbW9;aMb,9Lb$cd3Tb*1%cg9Mcgb?5qckb|b~7.afbua$bwa)0s6Pbz8W5n4@bDat7Mczae9@9 cx6$cAa-3H59cEa=abcP9wa_3SaA3zc5b!0eaF2a8q0Vcp8Acgc7aVb`5f8z9%9IaDc70k3V0U9Fc+aZcscJa%a05ra+cF6m5pcRbF5nd4a^aDa|bJcgb104br8@9a0P0C0R1c1(0M9a0O0M0O2d0ebnc`1%9F0$0wbh328qdkb59cd0b`cKak6A72cNap3g5Ed9cB5CdQbIa~9*ciaNa#b!clc:4)cn04b_d(b;b#049{c@c00}0gc!d;c70ccg0R0}0Gc-bU0z9:8nc+b%d+630}dAc|c*eb9!0}c?bQc^d$c+b/d:3Sd-d/cud)cqbt3P8Hd2cx5Vd5cSaueCdVcO6A8NcIdMeAdO3g9k329geIeParbEdW6A9kaxb!cY8ed^c6aF8d29egeqc;cfeh9Q04c/e.aX0}c 6seMcweO0qa2eRa,dSf0eVd65{cVde8$8(e;0^didIb40dex2Keze~0e69eDdafoeHf4aw88aPdibJ0p0O94910$dudw2abn2Bbie@49e}8Vd36odRa?3ga/9seE7M6nf98*8,a}8%b7b91(0F0)fDdvdx0tfjcWdNfn6Abyf2f76!6Bf6fV6mbHfvb!fx9yfg9af:flfNeBczf_f~5+cDfUfq6OcVdg9A0}0Te%eld#04d fd01e104e3gtc7bVe79=d%eud;aRgyengtd*e^4~d-5GgLeid?e{fLeqf=5CcMgcgh6#f}gZ0qcMdZbJ9zbL0}0L1Rcje(b!c10}2+f/g;d}0}gsgP1+gvgxg~bTc8aJgBccgJe:h2che?b+h804epgEerb@d.c+b}8DdLgUeNf?3I6?fQcT3h6=g#eXhsgjg*hCem04eec}g`3Sgvd{hIaTgre0e2e4041V2E9h0R130)e9hRfKey89gKhh5feshlcre|hpfm8MdQgYhz71hyeTh^a^hChDgqh#fkh%b.cmhjeth$aP8zd@gpaPhKd|4xg|hPgwhR0(e7e-h)e_c,gHhcg:hah(i7b!h+heb}g7bvg9eO7ffph@23fsfRiEh|h}gkc6gIiti3gtgNhlie5fidhM5=iggth0hR0Ue6e,hZiqhGimivgFejiViZirgDi/b{hfi4coiyh-gThhgVhweQ0$eSdS7rh_j7eZ9xd!iO040nc`dyi=4~iXibc#i!hai$iqhT8r0KhW2dg_iQiphac.hdjyhgi_h*hjgOin4~i9i 5KfMajhr7DiFh`a7ggh@adjcg+jni@eoi|5.iUiYjkd`jjb)hOi#hQiqiki*heeajAiPjJgQjEi1aPiTi~iAcviCjQamh?h`4qiIhv7NhBjZd;bM0)bOj-e=jg20jxj0ey0#7:7T7+7V7(1g0t7Ykx2R2M0n1$ku0#7W8F0(0*0,0K04.