Pino vs. kasa
Pino on tilattu luettelo, jossa luettelon kohteet voidaan lisätä ja poistaa vain yhdessä päässä, nimeltään yläosa. Tästä syystä pinoa pidetään viimeisenä ensimmäisenä (LIFO) -rakenteena. Kasa on erityinen puurakenteinen datarakenne, joka täyttää kasaominaisuudeksi kutsuttu erityisominaisuuden. Kasa on myös kokonainen puu, mikä tarkoittaa, että puun lehtien välillä ei ole aukkoja, ts. Täydellisessä puussa jokainen taso täytetään ennen puun uuden tason lisäämistä ja tietyn tason solmut täytetään vasemmalta oikealle.
Mikä on pino?
Kuten aikaisemmin mainittiin, pino on tietorakenne, jossa elementit lisätään ja poistetaan vain yhdestä päästä, nimeltään yläosa. Pinot sallivat vain kaksi perustoimintoa, nimeltään push ja pop. Työnnys lisää uuden elementin pinon yläosaan. Ponnahdustoiminto poistaa elementin pinon yläosasta. Jos pino on jo täynnä, työnnettäessä sitä pidetään pinon ylivuodona. Jos pop-toiminto suoritetaan jo tyhjällä pinossa, sitä pidetään pinon alivuodona. Pinoon suoritettavien operaatioiden pienen määrän vuoksi sitä pidetään rajoitettuna tietorakenteena. Lisäksi push- ja pop-toimintojen määrittelytavan mukaan on selvää, että pinoon viimeksi lisätyt elementit menevät pinosta ensin. Siksi pinoa pidetään LIFO-tietorakenteena.
Mikä on kasa?
Kuten aiemmin mainittiin, kasa on täydellinen puu, joka tyydyttää kasan ominaisuuden. Heap-ominaisuudessa todetaan, että jos y on x: n lapsisolmu, solmun x tallennetun arvon tulisi olla suurempi tai yhtä suuri kuin solmuun y tallennettu arvo (ts. Arvo (x) ≥ arvo (y)). Tämä ominaisuus merkitsee, että solmulla, jolla on suurin arvo, sijoitetaan aina juuri. Tätä ominaisuutta käyttämällä rakennettua kasaa kutsutaan max-kasaksi. Kasa-ominaisuudessa on toinen variaatio, joka ilmaisee tämän päinvastaisen. (ts. arvo (x) ≤ arvo (y)). Tämä merkitsee sitä, että pienimmän arvon solmu sijoitetaan aina juureen, jota kutsutaan siten min-kasaksi. Kasoille suoritetaan laaja valikoima toimintoja, kuten minimien (min-kasoissa) tai maksimien (enimmäiskertoissa) löytäminen, minimien (min-kasoissa) tai maksimien (enimmäiskertoissa) poistaminen, lisääminen (enimmäisissä). -heps) tai pienenevä (min-kasoissa) näppäin jne.
Mikä ero on Stackilla ja Heapilla??
Pinojen ja kasojen tärkein ero on, että vaikka pino on lineaarinen tietorakenne, kasa on epälineaarinen tietorakenne. Pino on tilattu luettelo, joka seuraa LIFO-ominaisuutta, kun taas kasa on kokonainen puu, joka seuraa kasan ominaisuutta. Lisäksi pino on rajoitettu tietorakenne, joka tukee vain rajoitettua määrää operaatioita push- ja pop-toimintoina, kun taas kasa tukee monenlaisia toimintoja, kuten minimien tai maksimien löytämistä ja poistamista, avaimen lisäämistä tai pienentämistä ja yhdistämistä.