Zásobník (stack) je jednou ze základních datových struktur, která se využívá především pro dočasné ukládání dat v průběhu výpočtu. Zásobník data ukládá způsobem, kterému se říká LIFO - last in, first out - čili poslední vložený prvek jde na výstup jako první, předposlední jako druhý a tak dále. Opačným způsobem funguje datový typ fronta - FIFO - first in, first out.
Základní operace
Abstraktní datový typ zásobník specifikuje tyto operace:
- push - vloží prvek na vrch zásobníku
- pop - odstraní vrchol zásobníku
- top - dotaz na vrchol zásobníku
- isEmpty - dotaz na prázdnost zásobníku (size - dotaz na velikost zásobníku)
Využití
Zásobník se v informatice používá zejména pro ukládání stavu algoritmů a programů. Je použit v Tarjanově algoritmu, v prohledávání do hloubky a implicitně ve všech rekurzivních algoritmech. Na zásobníkové architektuře jsou postaveny virtuální stroje pro jazyky Java a Lisp.
Kód
/** * Zasobnik * Implementovan jako spojovy seznam */ public class Stack { private Node first; private int size; public Stack() { this.size = 0; } /** * Ulozi prvek na vrch zasobniku * Slozitost - O(1) * @param i prvek k ulozeni */ public void push(int i) { Node n = new Node(i); Node currFirst = first; first = n; n.next = currFirst; size++; } /** * Odstrani vrchni prvek ze zasobniku * Slozitost - O(1) * @return hodnota vrchniho prvku */ public int pop() { if (size == 0) { throw new IllegalStateException("Zasobnik je prazdny, nelze odebrat prvek"); } int value = first.value; first = first.next; size--; return value; } /** * Vrati vrchol zasobniku * Slozitost - O(1) * @return hodnota vrchniho prvku */ public int top() { if (size == 0) { throw new IllegalStateException("Zasobnik je prazdny, nelze vratit"); } return first.value; } /** * Vrati velikost zasobniku * @return velikost zasobniku */ public int getSize() { return this.size; } /** * Klasicka toString metoda, vraci textovou reprezentaci objektu * @return textova reprezentace objektu */ @Override public String toString() { StringBuilder builder = new StringBuilder(); Node curr = first; for (int i = 0; i < this.size; i++) { builder.append(curr.value).append(" "); curr = curr.next; } return builder.toString(); } /** * Vnitrni trida reprezentujici uzel spojoveho seznamu */ private class Node { private int value; private Node next; private Node(int value) { this.value = value; } } }
SEO od společnosti Digital Pylon
Online casino s algoritmem
České casino online online slot-vegas.cz
Hrajte nejlepší hry jako je GoodGame Empire.
Zajímavé články: Jak najít práci snů? Zvolte kariéru v IT!, Češi mají rádi hrací automaty online, Jak funguje algoritmické obchodování Casino, Online výuka Algoritmus a online marketing mají svá pravidla, Automaty, Matematický vliv, Ratings, Jak fungují algoritmy hazardních her online: více znalostí, více peněz, SYPWAI - nástroj pro vědecký vývoj, Vynikají na globálním trhu: Nejlepší vývojáři softwaru pro online výherní automaty, Jak si vybrat nejlepší české online casino, Proč byste měli hrát online casino VPN revoluce, Kde najdeme algoritmy v každodenním životě?, Čeká vás pracovní pohovor mimo město? Podívejte se, jak dokonale zvládnout včasný příchod, 5 úžasných technologií ze světa hazardních her, Mirror and access to Mostbet, Svou kancelář můžete mít stále po ruce, Jaké výhody má digitalizovaná firma oproti off-line konkurenci?, Jaký systém vybrat pro snadné řízení výroby?, Nahradí umělá inteligence ajťáky?, Důvody, proč používat SnapTik ke stahování videí TikTok, Dokonalý den na pláži: Co si vzít s sebou, aby byl výlet zábavný a bezpečný?, Jak přežít dlouhý let?, Go pay GoodGame Empire, Blockchain, Rozhovor