Virnad on lineaarsed andmestruktuurid, mis järgivad LIFO põhimõtet. LIFO tähistab viimasena esimesena väljas, mis tähendab, et viimati lisatud üksus eemaldatakse esimesena. Seda andmestruktuuri nimetatakse virnaks analoogia põhjal pärismaailma virnadega, nt küpsisevirn küpsisepurgis või virn raamatuid raamaturiiulil. Virnas saab sisestada ja välja tõmmata ainult ühes otsas, st virna ülaosas. Näiteks kui tahame küpsist süüa, saame kõigepealt ülemise ja seejärel teise ja nii edasi.
See postitus käsitleb virna rakendamist JavaScriptis. Kuna töötame JavaScriptiga, ei pea me virna suuruse pärast muretsema, kuna JavaScripti objektide suurus võib dünaamiliselt kasvada.
Stacki juurutamine JavaScriptis
Virna andmestruktuuri rakendamiseks kasutame JavaScripti klassi. The virna klass sisaldab oma konstruktoris massiivi, mida kasutatakse virna elementide salvestamiseks. Klass määratleb ka erinevad meetodid, mida kasutatakse virna sees salvestatud andmetega manipuleerimiseks. Massiivi kõige põhilisemad meetodid on insert () ja ekstrakt () meetodid, mida kasutatakse elementide lisamiseks ja eemaldamiseks virna ülaosast.
The virna klass määratleb ka muid meetodeid, nagu piiluma () , on tühi() , selge () , print() ja suurus () samuti:
klassi virn {
konstruktor ( ) {
see.elemendid = [ ] ;
}
// Asetab üksuse virna peale
sisestada ( element ) {
this.elements.push ( element ) ;
}
// Eemaldab üksuse virna ülaosast
väljavõte ( ) {
see.elemendid.pop ( ) ;
}
// Tagastab virna kõige ülemise elemendi
piiluma ( ) {
tagasi see.elemendid [ this.elements.length - 1 ] ;
}
// Kontrollid kui virn on tühi
on tühi ( ) {
tagasi see.elemendid.pikkus == 0 ;
}
// Prindib kogu virna
printida ( ) {
jaoks ( lase i = 0 ; i < see.elemendid.pikkus; i++ ) {
console.log ( see.elemendid [ i ] ) ;
}
}
// Tagastab suurus virnast
suurus ( ) {
tagasi see.elemendid.pikkus;
}
// puhastab virna
selge ( ) {
see.elemendid = [ ] ;
}
}
Elementide virnast lükkamine ja poputamine
Virna kõige elementaarsem toiming on elementide sisestamine ja eemaldamine virna ülaosast. Virna klass pakub nende toimingute jaoks kahte meetodit:
Ülalmainitud koodi esimene rida deklareerib uue pinu nimega s . Siis insert () meetodit kasutatakse nelja elemendi sisestamiseks virna, millest kaks eemaldatakse seejärel ekstrakt () meetod.
Kuidas ülemine element virnast kätte saada
The virna klass määratleb piiluma () meetod ülemise elemendi virnast hankimiseks:
Kuidas kontrollida, kas virn on tühi?
Klass määratleb ka meetodi, mille abil saab kontrollida, kas virn on tühi:
Kuidas printida kogu virn?
The print() meetodit saab kutsuda kogu virna printimiseks
Kuidas kontrollida virna suurust?
The suurus () meetod kasutab .pikkus atribuut virna suuruse saamiseks:
Kuidas kogu pinu tühjendada?
Lihtsalt kutsuge esile selge () meetod virna iga elemendi eemaldamiseks:
Järeldus
Virnad on kasulikud andmestruktuurid paljude reaalmaailma rakendustega, nagu brauseri ajalugu, tagasivõtmisnupp tekstiredaktorites ja kõnelogid. Kõik need rakendused järgivad LIFO põhimõtet, nt brauseri tagasinupp viib tagasi viimati külastatud lehele ja kõnelogi esimene kirje on alati viimane kõne.
Viru rakendamine JavaScriptis on väga lihtne, kuna sellel on sisseehitatud suruma ja pop meetodid massiivide jaoks. See artikkel demonstreerib virna juurutamise protsessi JavaScriptis.