logo

Kaj je Stack?

Sklad je linearna podatkovna struktura, ki sledi LIFO (zadnji vstop, prvi ven) načelo. Sklad ima en konec, medtem ko ima čakalna vrsta dva konca ( spredaj in zadaj ). Vsebuje le en kazalec zgornji kazalec ki kaže na najvišji element sklada. Kadarkoli je element dodan v sklad, je dodan na vrh sklada in element je mogoče izbrisati samo iz sklada. Z drugimi besedami, a sklad lahko definiramo kot vsebnik, v katerega je mogoče vstavljanje in brisanje opraviti z enega konca, znanega kot vrh sklada.

Nekaj ​​ključnih točk, povezanih s skladom

  • Imenuje se sklad, ker se obnaša kot sklad v resničnem svetu, kupi knjig itd.
  • Stack je abstraktni podatkovni tip z vnaprej določeno kapaciteto, kar pomeni, da lahko shrani elemente omejene velikosti.
  • To je podatkovna struktura, ki sledi določenemu vrstnemu redu za vstavljanje in brisanje elementov, ta vrstni red pa je lahko LIFO ali FILO.

Delovanje sklada

Stack deluje na vzorcu LIFO. Kot lahko opazimo na spodnji sliki, je v skladu pet pomnilniških blokov; zato je velikost sklada 5.

amisha patel

Recimo, da želimo shraniti elemente v sklad in predpostavimo, da je sklad prazen. Vzeli smo sklad velikosti 5, kot je prikazano spodaj, v katerem potiskamo elemente enega za drugim, dokler se sklad ne napolni.

Predstavitev sklada DS

Ker je naš sklad poln, saj je velikost sklada 5. V zgornjih primerih lahko opazimo, da gre od vrha proti dnu, ko smo vnašali nov element v sklad. Sklad se napolni od spodaj navzgor.

Ko izvedemo operacijo brisanja na skladu, obstaja samo ena pot za vstop in izstop, saj je drugi konec zaprt. Sledi vzorcu LIFO, kar pomeni, da bo prva vnesena vrednost odstranjena zadnja. V zgornjem primeru je najprej vpisana vrednost 5, zato bo odstranjena šele po izbrisu vseh ostalih elementov.

Standardne operacije sklada

Sledi nekaj pogostih operacij, ki se izvajajo na skladu:

    potisni():Ko vstavimo element v sklad, je operacija znana kot potiskanje. Če je sklad poln, nastopi stanje prelivanja.pop():Ko izbrišemo element iz sklada, je operacija znana kot pop. Če je sklad prazen, pomeni, da v skladu ne obstaja noben element, je to stanje znano kot stanje pretoka.je prazno():Določa, ali je sklad prazen ali ne.je poln():Določa, ali je sklad poln ali ne.'pokukati():Vrne element na danem položaju.štetje():Vrne skupno število elementov, ki so na voljo v skladu.spremeni():Spremeni element na danem položaju.prikaz():Natisne vse elemente, ki so na voljo v skladu.

PUSH delovanje

Spodaj so navedeni koraki, vključeni v operacijo PUSH:

  • Pred vstavljanjem elementa v sklad preverimo, ali je sklad poln.
  • Če poskušamo element vstaviti v sklad in je sklad poln, potem je preliv pride do stanja.
  • Ko inicializiramo sklad, nastavimo vrednost vrha na -1, da preverimo, ali je sklad prazen.
  • Ko je nov element potisnjen v sklad, se najprej poveča vrednost vrha, tj. top=top+1, in element bo postavljen na nov položaj vrh .
  • Elementi bodo vstavljeni, dokler ne dosežemo maks velikost sklada.
Predstavitev sklada DS

delovanje POP

Spodaj so navedeni koraki, vključeni v operacijo POP:

kako inicializirati matriko v Javi
  • Preden izbrišemo element iz sklada, preverimo, ali je sklad prazen.
  • Če poskušamo izbrisati element iz praznega sklada, potem je podtok pride do stanja.
  • Če sklad ni prazen, najprej dostopamo do elementa, na katerega kaže vrh
  • Ko je operacija izpiranja izvedena, se zgornji del zmanjša za 1, tj. top=top-1 .
Predstavitev sklada DS

Aplikacije Stacka

Naslednje so aplikacije sklada:

    Uravnoteženje simbolov:Stack se uporablja za uravnoteženje simbola. Na primer, imamo naslednji program:
 int main() { cout&lt;<'hello'; cout<<'javatpoint'; } < pre> <p>As we know, each program has <em>an opening</em> and <em>closing</em> braces; when the opening braces come, we push the braces in a stack, and when the closing braces appear, we pop the opening braces from the stack. Therefore, the net value comes out to be zero. If any symbol is left in the stack, it means that some syntax occurs in a program.</p> <ul> <tr><td>String reversal:</td> Stack is also used for reversing a string. For example, we want to reverse a &apos; <strong>javaTpoint</strong> &apos; string, so we can achieve this with the help of a stack. <br> First, we push all the characters of the string in a stack until we reach the null character. <br> After pushing all the characters, we start taking out the character one by one until we reach the bottom of the stack. </tr><tr><td>UNDO/REDO:</td> It can also be used for performing UNDO/REDO operations. For example, we have an editor in which we write &apos;a&apos;, then &apos;b&apos;, and then &apos;c&apos;; therefore, the text written in an editor is abc. So, there are three states, a, ab, and abc, which are stored in a stack. There would be two stacks in which one stack shows UNDO state, and the other shows REDO state. <br> If we want to perform UNDO operation, and want to achieve &apos;ab&apos; state, then we implement pop operation. </tr><tr><td>Recursion:</td> The recursion means that the function is calling itself again. To maintain the previous states, the compiler creates a system stack in which all the previous records of the function are maintained. </tr><tr><td>DFS(Depth First Search):</td> This search is implemented on a Graph, and Graph uses the stack data structure. </tr><tr><td>Backtracking:</td> Suppose we have to create a path to solve a maze problem. If we are moving in a particular path, and we realize that we come on the wrong way. In order to come at the beginning of the path to create a new path, we have to use the stack data structure. </tr><tr><td>Expression conversion:</td> Stack can also be used for expression conversion. This is one of the most important applications of stack. The list of the expression conversion is given below: <pre>Infix to prefix Infix to postfix Prefix to infix Prefix to postfix Postfix to infix</pre> </tr><tr><td>Memory management:</td> The stack manages the memory. The memory is assigned in the contiguous memory blocks. The memory is known as stack memory as all the variables are assigned in a function call stack memory. The memory size assigned to the program is known to the compiler. When the function is created, all its variables are assigned in the stack memory. When the function completed its execution, all the variables assigned in the stack are released. </tr></ul> <hr></'hello';>
Upravljanje pomnilnika:Sklad upravlja pomnilnik. Pomnilnik je dodeljen v sosednjih pomnilniških blokih. Pomnilnik je znan kot pomnilnik sklada, saj so vse spremenljivke dodeljene v pomnilniku sklada klicev funkcij. Velikost pomnilnika, dodeljena programu, je znana prevajalniku. Ko je funkcija ustvarjena, so vse njene spremenljivke dodeljene v pomnilnik sklada. Ko funkcija zaključi svojo izvedbo, se sprostijo vse spremenljivke, dodeljene v skladu.