Cette publication est accessible gratuitement
Télécharger
IN-´--T0-. ´0e12eF0Te02´0
 EDoDe3
Exer3i3e-:VAeFipe2VTLiTeaiaaeV Nousallonsetudiericiunenouvellestructurededonenes:lesiggetiepehea , et nous verronsquuncertaintypedarbrespermetdelesrepersenterdemanie`reexter^mementecace.
e´iDOi.´.snenlbmedeepedorrieittuestnI lne,untmevetiuiertbiuselments`aquisontat untgiiepgag´deenonemelesterensliadtnertnquntvaaortnroiticsrpe le,nslaiensetqu leur rang : l’elment de rang le pluseletgials,iesrmtesertuadnE.reimervienprserasev   dunestructurededonenessurlaquelleop`erentlestroisoeprationssuivantes: une fonction d’insertion d’un eprderiioe)t,lmentdansl aela(evscnoargn une fonction qui renvoie l’elment de rang le pluselev, {une fonction qui supprime d’elment de rang le pluseleela le.vd Ondisposeradeplusdunobjetvidecorrespondant:la levide. Parmilesdei rentespossibilietsdecodagedes lesdeprioriet,nousutiliseronslastructure dite deathoucxacieig(epa.dneetattl dee(sitilibsspoestrauseL.)sialgnAneelments non treis,tableautrei)impliquentoubienuncalculdumaximumentempslineaire,oualorsle maintien d’un ordre entre tous les eire.essaneclsensapttnemiuqs Une structure de tas est un arbre satisfaisant les propreiets suivantes : { c’estun arbre binairepcecteaelnsotsuxuedviaeondeprofurs,seca`-tir-dnaeurerbntdo sontremplis,`alexceptiondudernier,celuiquinecomportequedesfeuilles,lesquelles sontrangeesleplusa`gauchepossible   {laclefdetoutnudestsueprieureouegalea`cellesdesesdescendants.
1{Unexempledetasou`lonanumeroetlesnuds`apartirde0.
eDaOpOi.´IIuDleIOaI.Moentecommyerumplosnamtnorantnnietrunecodepourntasel de prioriet. Tout d’abord, le codage de la fonction quie´eaxilde]vaiseispmelsett`r ilsutderenvoyerlaclefcontenuedanslaracine(siletasnestpasvide,bienus^r.)Cette oeprationpeutdoncsexecuterentempsconstant. Encequiconcernelafonctionie']ied´ed]eela]]id'i, son principe est le suivant :
1
1.oncommenceparcererunnouveaunudcontenantlanouvelleclefetonins`erecenuda` lapremie`replacedisponibledecetas,cest-a`-direleplus`agauchepossibledansleniveau leplusprofond(quitte`acererunnouveauniveausinecessaire).Onobtientalorsunarbre quiestcertescomplet,maisquipeutnepluse^treuntas.Letapesuivantevisedonca` ertablirlordredesnuds. 2.oncomparelanouvelleclefineserea`celledesonp`ere,etonpermutecesdeuxclefssi encessaire,onerit`ereceprocessusaveclaclefdupe`reetcelledugrand-pe`re,ect.remontant ainsidanslarbrejusqua`cequunepermutationnesoitpasnecessaireouquelonsoit arreiva`laracine.Cestcequiestillustersurla gure2.
erugiF{2esnIiortelndelment 43 dans un tas. En n, pour laelpdlaeia]xileedduonvntnsanoocdi,eenmmpacextreirrae laclefdelaracine(lemaximum),puisonlaremplaceparlaclefdunudleplus`adroitedu niveaudeprofondeurmaximale,etonsupprimecenud. Comme dans la cas de l’insertion, on obtient un arbre binaire complet, mais qui peut ne pluse^treuntas.Ilfautdoncertablirlapropreietdetasdelarbre,enpartantdelaracine: oncomparesaclefa`cellesdesesdeux ls,etlapermuteaveclemaximumdecesdeuxclefs. Onit`ereceprocessussurlenudou`onaplaeclaclef,lafaisantainsidescendredanslarbre jusqu`aneplusavoir`apermuter,oujusqu`aarriver`aunefeuille.Cestcequiestillustersurla gure3.
3 {Suppression de la racine d’un tas.
-.1]Etonntnahhceredsnudehcrehalaeuututrd,easpxiremlrcamolpxeitedesoperatio maximum, d’insertion et de suppression en fonction deh.
-.2]merxpriEhen fonction du nombre d’elments complexietdestroisoperationsenfonctionden.
2
contenusdansletas.Endeduirela
I eOi.´.ple´OaLestnibne^satpsueevbreredassi,samedocesruanzessaremllretumeomtcen ilfaudraitajouteraucodageclassiquedesarbreslemoyendacecderecacementaup`erede chaquenud,ainsiquaunudleplus`adroitedudernierniveau. Ilsetrouvequilesta`lafoisplussimpleetplusecacedecoderunarbrebinairecomplet, etdoncunestructuredetas,dansuntableauou`leselartnegnnemosstdelerdreslosdanru numerotation(voir gure4).
guFierRepersentation d’un tas par un tableau.4 { Aveccetterepersentation,lecalculdechaque lsetdupe`redunnudestparticulie`rement simple:le lsgauchedunuddindiceila`idniixel,etsstei,sce2icie`tlaidne lsdroi+1,l i1 2i+,2neeerp`leetb c. La propreiet des tas se’nonce alors, pour un tas de taillenrepersenet 2 par un tableauA:   i1 8i2[1; n1]; A[i]Ab c 2 Perciesment, en C, un tas est (un pointeur vers) uneefdg;fcontenant un tableauf./, un entiera.hrepersentant le nombre maximum d’elments et un entierbrepersentant le nombre d’elemtnenemtots eseivctekc:s
1ACpyffe;DgCdf 1aa.h; 2ab; 3iat*f./; 4}pa*e;
-.3]estatezloyensaumImenepmlrotpamgrzlmeopesetedatslaelbe,xueesearitnoassscoi de ceration, d’impression, de recherche du maximum et d’insertion. Voici les signatures des fonctions que vous devez impelmenter.
1i_v.CcA_C.A;.iffA_bigC'_f´baef.CC)adciCd.CficcbAC_.a/* 1e**pa_fibp.CH´iati}(({(a2/*e.fIa/*d.CGC´_biebcdpeCA'gbfCbgg;cbgdA 3didv_fbidp´.pHCp*ea*}(({(,/*a.hiagaA'gbf.e/* 4 5itagaia´CHp.a_h.ea*p*},(({( 6*/Cebicifd_CAbDIA..;_Cf.e*begb/ 8didvCHf´ebdCp.i_tiaI,*p*ea}(({(,
3