Stack vs Lundo
Stack ni orodha iliyoagizwa ambayo uwekaji na ufutaji wa vipengee vya orodha unaweza kufanywa katika sehemu moja tu inayoitwa sehemu ya juu. Kwa sababu hii, rafu inachukuliwa kuwa muundo wa data wa Mwisho katika Kwanza (LIFO). Lundo ni muundo maalum wa data ambao msingi wake ni miti na unakidhi mali maalum inayoitwa mali ya lundo. Pia, lundo ni mti kamili, ambayo ina maana kwamba hakuna mapengo kati ya majani ya mti yaani katika mti kamili kila ngazi hujazwa kabla ya kuongeza ngazi mpya kwenye mti na nodes katika ngazi fulani hujazwa kutoka. kushoto kwenda kulia.
Stack ni nini?
Kama ilivyotajwa awali, rafu ni muundo wa data ambapo vipengele huongezwa na kuondolewa kutoka ncha moja tu inayoitwa sehemu ya juu. Rafu huruhusu shughuli mbili pekee za kimsingi zinazoitwa push na pop. Operesheni ya kusukuma huongeza kipengele kipya juu ya rafu. Operesheni ya pop huondoa kipengee kutoka juu ya rafu. Ikiwa stack tayari imejaa, wakati operesheni ya kushinikiza inafanywa, inachukuliwa kama kufurika kwa stack. Iwapo operesheni ya pop itafanywa kwenye rafu ambayo tayari tupu, inachukuliwa kuwa rundo linalotiririka. Kwa sababu ya idadi ndogo ya shughuli zinazoweza kufanywa kwenye rafu, inachukuliwa kuwa muundo wa data uliowekewa vikwazo. Zaidi ya hayo, kulingana na jinsi shughuli za kushinikiza na pop zinavyofafanuliwa, ni wazi kwamba vipengele vilivyoongezwa mwisho kwenye rafu hutoka kwenye rundo kwanza. Kwa hivyo rafu inachukuliwa kuwa muundo wa data wa LIFO.
Lundo ni nini?
Kama ilivyotajwa awali, lundo ni mti kamili unaotosheleza mali ya lundo. Mali ya Lundo inasema kwamba, ikiwa y ni nodi mtoto ya x basi thamani iliyohifadhiwa katika nodi x inapaswa kuwa kubwa kuliko au sawa na thamani iliyohifadhiwa katika nodi y (yaani thamani(x) ≥ thamani(y)). Sifa hii inamaanisha kuwa nodi iliyo na thamani kubwa itawekwa kila wakati kwenye mzizi. Lundo lililojengwa kwa kutumia mali hii inaitwa max-lundo. Kuna tofauti nyingine ya mali ya lundo ambayo inasema kinyume cha hii. (yaani thamani(x) ≤ thamani(y)). Hii ina maana kwamba nodi yenye thamani ndogo kabisa ingewekwa kwenye mzizi, hivyo huitwa min-rundo. Kuna anuwai ya shughuli zinazofanywa kwenye lundo kama vile kutafuta kiwango cha chini (katika chungu-ndani) au kiwango cha juu zaidi (katika chungu-max), kufuta kiwango cha chini (katika chungu-ndani) au kiwango cha juu zaidi (katika max-rundo), kuongeza (katika max-rundo). -chungu) au kitufe cha kupunguza (katika mirundo midogo), n.k.
Kuna tofauti gani kati ya Stack na Lundo?
Tofauti kuu kati ya rafu na lundo ni kwamba ingawa rafu ni muundo wa data, lundo ni muundo wa data usio na mstari. Stack ni orodha iliyoagizwa ambayo inafuata mali ya LIFO, wakati lundo ni mti kamili unaofuata mali ya lundo. Zaidi ya hayo, rafu ni muundo wa data uliowekewa vikwazo ambao unaauni idadi ndogo tu ya utendakazi kama kushinikiza na pop, wakati lundo linaauni shughuli mbalimbali kama vile kutafuta na kufuta kiwango cha chini au cha juu zaidi, kuongeza au kupunguza ufunguo na kuunganisha.