logo

Wat is een stapel?

Een Stack is een lineaire datastructuur die volgt op de LIFO (Laatste in, eerst uit) beginsel. De stapel heeft één uiteinde, terwijl de wachtrij twee uiteinden heeft ( voorkant en achterkant ). Het bevat slechts één aanwijzer bovenste wijzer wijzend naar het bovenste element van de stapel. Telkens wanneer een element aan de stapel wordt toegevoegd, wordt het bovenaan de stapel toegevoegd en kan het element alleen van de stapel worden verwijderd. Met andere woorden, een stapel kan worden gedefinieerd als een container waarin het invoegen en verwijderen kan worden gedaan vanaf het ene uiteinde dat bekend staat als de bovenkant van de stapel.

Enkele belangrijke punten met betrekking tot stapeling

  • Het wordt stapel genoemd omdat het zich gedraagt ​​als een echte stapel, stapels boeken, enz.
  • Een Stack is een abstract datatype met een vooraf gedefinieerde capaciteit, wat betekent dat deze de elementen van een beperkte omvang kan opslaan.
  • Het is een datastructuur die een bepaalde volgorde volgt voor het invoegen en verwijderen van de elementen, en die volgorde kan LIFO of FILO zijn.

Werking van stapel

Stack werkt volgens het LIFO-patroon. Zoals we in de onderstaande afbeelding kunnen zien, bevinden zich vijf geheugenblokken in de stapel; daarom is de grootte van de stapel 5.

centos versus rhel

Stel dat we de elementen in een stapel willen opslaan en laten we aannemen dat de stapel leeg is. We hebben de stapel van maat 5 genomen zoals hieronder weergegeven, waarbij we de elementen één voor één duwen totdat de stapel vol is.

DS Stack-introductie

Omdat onze stapel vol is omdat de stapel 5 is. In de bovenstaande gevallen kunnen we zien dat deze van boven naar beneden gaat toen we het nieuwe element in de stapel invoerden. De stapel wordt van onder naar boven gevuld.

Wanneer we de verwijderbewerking op de stapel uitvoeren, is er maar één manier om in en uit te gaan, omdat het andere uiteinde gesloten is. Het volgt het LIFO-patroon, wat betekent dat de eerst ingevoerde waarde als laatste wordt verwijderd. In het bovenstaande geval wordt eerst de waarde 5 ingevoerd, dus deze wordt pas verwijderd nadat alle andere elementen zijn verwijderd.

Standaard stapelbewerkingen

Hieronder volgen enkele veelvoorkomende bewerkingen die op de stapel zijn geïmplementeerd:

    duw():Wanneer we een element in een stapel plaatsen, staat de bewerking bekend als een push. Als de stapel vol is, treedt de overlooptoestand op.knal():Wanneer we een element uit de stapel verwijderen, staat de bewerking bekend als een pop. Als de stapel leeg is, betekent dit dat er geen element in de stapel bestaat, deze staat staat bekend als een onderstroomstatus.is leeg():Het bepaalt of de stapel leeg is of niet.is vol():Het bepaalt of de stapel vol is of niet.'kijkje():Het retourneert het element op de gegeven positie.graaf():Het retourneert het totale aantal beschikbare elementen in een stapel.wijziging():Het verandert het element op de gegeven positie.weergave():Het drukt alle beschikbare elementen in de stapel af.

PUSH-bediening

De stappen die betrokken zijn bij de PUSH-bediening worden hieronder weergegeven:

  • Voordat we een element in een stapel plaatsen, controleren we of de stapel vol is.
  • Als we proberen het element in een stapel te plaatsen en de stapel is vol, dan wordt de overloop toestand optreedt.
  • Wanneer we een stapel initialiseren, stellen we de waarde van top in op -1 om te controleren of de stapel leeg is.
  • Wanneer het nieuwe element in een stapel wordt geduwd, wordt eerst de waarde van het bovenste element verhoogd, d.w.z. boven=boven+1, en het element wordt op de nieuwe positie van de geplaatst bovenkant .
  • De elementen worden ingevoegd totdat we de maximaal grootte van de stapel.
DS Stack-introductie

POP-bediening

De stappen die betrokken zijn bij de POP-bewerking worden hieronder weergegeven:

c++ gesplitste tekenreeks
  • Voordat we het element van de stapel verwijderen, controleren we of de stapel leeg is.
  • Als we proberen het element uit de lege stapel te verwijderen, dan wordt de onderstroom toestand optreedt.
  • Als de stapel niet leeg is, hebben we eerst toegang tot het element waarnaar wordt verwezen bovenkant
  • Zodra de pop-operatie is uitgevoerd, wordt de top met 1 verlaagd, d.w.z. boven=boven-1 .
DS Stack-introductie

Toepassingen van stapel

Hieronder volgen de toepassingen van de stapel:

    Balanceren van symbolen:Stack wordt gebruikt om een ​​symbool in evenwicht te brengen. Wij hebben bijvoorbeeld het volgende programma:
 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';>
Geheugen management:De stapel beheert het geheugen. Het geheugen wordt toegewezen in de aangrenzende geheugenblokken. Het geheugen staat bekend als stapelgeheugen, omdat alle variabelen worden toegewezen in een functieaanroepstapelgeheugen. De geheugengrootte die aan het programma is toegewezen, is bekend bij de compiler. Wanneer de functie is gemaakt, worden alle variabelen toegewezen in het stapelgeheugen. Wanneer de functie zijn uitvoering heeft voltooid, worden alle variabelen die in de stapel zijn toegewezen vrijgegeven.