Sobes.tech
Intern

Kas yra stack'ai?

sobes.tech AI

Atsakymas iš AI

Eilutė — tai duomenų struktūra, veikianti pagal LIFO (Last-In, First-Out) principą. Elementai pridedami ir pašalinami tik iš vieno galo, vadinamo stovo viršumi.

Pagrindinės operacijos:

  • push: pridėti elementą į stovo viršų.
  • pop: pašalinti elementą iš stovo viršaus ir grąžinti jį.
  • peek: gauti elemento reikšmę stovo viršuje be pašalinimo.
  • isEmpty: patikrinti, ar stovas yra tuščias.

Java stovas yra pateiktas Stack klasės, kuri yra Vector subclass:

// Pavyzdys, kaip naudoti Stack
import java.util.Stack;

public class StackExample {

    public static void main(String[] args) {
        Stack<String> stack = new Stack<>();

        stack.push("Pirmas"); // Pridėti elementus
        stack.push("Antras");
        stack.push("Trečias");

        System.out.println("Stovo viršus: " + stack.peek()); // Peržiūrėti viršutinį elementą

        while (!stack.empty()) { // Kol stovas nėra tuščias
            System.out.println("Pašaliname: " + stack.pop()); // Pašalinti elementus
        }
    }
}

Alternatyva ir šiuolaikinėje Java programavime rekomenduojamas būdas — naudoti ArrayDeque kaip stovą, nes jis užtikrina geresį našumą:

// Pavyzdys, kaip naudoti ArrayDeque kaip stovą
import java.util.ArrayDeque;
import java.util.Deque;

public class ArrayDequeStackExample {

    public static void main(String[] args) {
        Deque<String> stack = new ArrayDeque<>(); // Naudojame Deque kaip stovą

        stack.push("Pirmas"); // Pridėti elementus
        stack.push("Antras");
        stack.push("Trečias");

        System.out.println("Stovo viršus: " + stack.peek()); // Peržiūrėti viršutinį elementą

        while (!stack.isEmpty()) { // Kol stovas nėra tuščias
            System.out.println("Pašaliname: " + stack.pop()); // Pašalinti elementus
        }
    }
}

Stovų taikymas:

  • Skaičiavimo išraiškų įvertinimas (pavyzdžiui, atvirkštinė polinė notacija).
  • Operacijų atšaukimas/atkūrimas redaktoriuose (Ctrl+Z/Ctrl+Y).
  • Funkcijų kvietimų valdymas operacinėje sistemoje.
  • Rekursiniai algoritmai.
  • grafų ir medžių apėjimas (paieška gylio pirmumo būdu).