Stack ehk magasin

Magasin on andmestruktuur, kus andmeid lisatakse ja eemaldatakse last-in-first-out(LIFO) põhimõttel.

Magasinil on neli põhilist meetodit:

  • push() - magasini lisamiseks.

  • pop() - magasinist eemaldamiseks.

  • peek() - magasini viimase elemendi tagastamiseks.

  • isEmpty() - tagastab tõeväärtuse selle kohta, kas magasin on tühi või mitte.

LIFO põhimõte

Kujutame magasini ette mingi kuhjana. Andmeid lisame alati kuhja peale ja andmeid saame eemaldada vaid kuhja tipust.

../_images/java-stack.png

Andmeid lisame magasini push() meetodiga ja alati magasini lõppu (tippu)

Andmeid eemaldame magasinist pop() meetodiga. Eemaldatakse alati kõige viimane elemnt, mille me magasini lisasime.

Magasin Javas

Javas on magasini jaoks olemas klass Stack. Siiski soovitatakse Javas kasutada Deque liidest ja realisatsioonina klassi ArrayDeque. Deque on kahe otsaga järjekord aga sisaldab samas ka magasini funktsionaalsust

public class StackExamples {
    import java.util.Deque;
    import java.util.ArrayDeque; 

    public static void main(String[] args) {
        Deque<Integer> stack = new ArrayDeque<Integer>();
        for (int i = 0; i < 10; i++){
            stack.push(i); // lisame numbrid 0, 1, ... , 9
        }
        while (!stack.isEmpty()){
            System.out.println(stack.pop()); // prinditakse numbrid 9, 8, ... , 0
        }
    }
}