A veremek lineáris adatstruktúrák, amelyek a LIFO elvét követik. A LIFO jelentése last in first out, ami azt jelenti, hogy a legutóbb hozzáadott elem lesz az első, amelyet eltávolítanak. Ezt az adatszerkezetet veremnek nevezik a valós világban lévő halmok analógiájaként, például egy halom cookie-t egy süteményedényben vagy egy köteg könyvet a könyvespolcon. A veremben a behelyezés és a kihúzás csak az egyik végén, azaz a verem tetején végezhető el. Például, ha sütit akarunk enni, először a felsőt kapjuk, majd a másodikat és így tovább.
Ez a bejegyzés a verem JavaScriptben való megvalósításáról fog szólni. Miközben JavaScripttel dolgozunk, nem fogunk aggódni a verem mérete miatt, mivel a JavaScript objektumok mérete dinamikusan nőhet.
Stack implementációja JavaScriptben
A verem adatszerkezet megvalósításához JavaScript osztályt fogunk használni. Az Kazal osztály egy tömböt tartalmaz a konstruktorában, amely a veremben lévő elemek tárolására szolgál. Az osztály különböző módszereket is meghatároz, amelyek a veremben tárolt adatok manipulálására szolgálnak. A tömb legalapvetőbb módszerei a insert() és kivonat() módszerek, amelyek segítségével elemeket adnak hozzá és távolítanak el a verem tetejéről.
Az Kazal osztály más metódusokat is definiál, mint pl kandikál() , üres() , egyértelmű() , nyomtatás() és méret() is:
osztályú verem {
konstruktőr ( ) {
ezt.elemek = [ ] ;
}
// Elhelyez egy elemet a köteg tetejére
betét ( elem ) {
ez.elemek.nyomja ( elem ) ;
}
// Eltávolít egy elemet a köteg tetejéről
kivonat ( ) {
ez.elemek.pop ( ) ;
}
// A verem legfelső elemét adja vissza
kandikál ( ) {
Visszatérés ezt.elemek [ this.elements.length - 1 ] ;
}
// Ellenőrzések ha a verem üres
üres ( ) {
Visszatérés ez.elemek.hossz == 0 ;
}
// Kinyomtatja a teljes köteget
nyomtatás ( ) {
számára ( hagyja i = 0 ; én < this.elements.length; i++ ) {
console.log ( ezt.elemek [ én ] ) ;
}
}
// Visszaadja a méret a veremből
méret ( ) {
Visszatérés this.elements.length;
}
// törli a köteget
egyértelmű ( ) {
ez.elemek = [ ] ;
}
}
Elemek tolása és felpattanása a veremből
A verem legalapvetőbb művelete az elemek behelyezése és kiemelése a verem tetejéről. A veremosztály két módszert biztosít ezekhez a műveletekhez:
A fent említett kód első sora deklarál egy új nevű veremet s . Aztán a insert() módszerrel négy elemet helyeznek be a verembe, amelyek közül kettőt azután eltávolít a kivonat() módszer.
Hogyan vegyük ki a legfelső elemet a veremből
Az Kazal osztály határozza meg a kandikál() módszer a legfelső elem kinyerésére a veremből:
Hogyan ellenőrizhető, hogy a verem üres-e?
Az osztály meghatároz egy metódust is, amellyel ellenőrizhető, hogy a verem üres-e:
Hogyan kell kinyomtatni a teljes köteget?
Az nyomtatás() metódus hívható a teljes verem kinyomtatására
Hogyan ellenőrizhető a köteg mérete?
Az méret() módszer a .hossz tulajdonság a verem méretének kiszámításához:
Hogyan lehet törölni az egész köteget?
Egyszerűen hívja fel a egyértelmű() módszer a verem minden elemének eltávolítására:
Következtetés
A veremek hasznos adatstruktúrák számos valós alkalmazáshoz, például a böngészési előzményekhez, a szövegszerkesztők visszavonása gombjához és a hívásnaplókhoz. Ezen alkalmazások mindegyike a LIFO elvet követi, például a böngésző vissza gombja visszalép az utoljára meglátogatott oldalra, és a hívásnapló első bejegyzése mindig a legutóbbi hívás.
A verem megvalósítása a JavaScriptben nagyon egyszerű, mivel rendelkezik beépített nyom és pop metódusok tömbökhöz. Ez a cikk a verem JavaScriptben való megvalósításának folyamatát mutatja be.