Sobes.tech
Intern

Stacklər nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Yığın, LIFO (Last-In, First-Out) prinsipinə əsaslanan məlumat strukturu olub, elementlər yalnız bir uclu, yəni yığının tepe nöqtəsindən əlavə və silinir.

Əsas əməliyyatlar:

  • push: elementi yığının tepe nöqtəsinə əlavə edir.
  • pop: elementi yığının tepe nöqtəsindən silir və geri qaytarır.
  • peek: yığının tepe nöqtəsindəki elementin dəyərini onun silinmədən əldə edir.
  • isEmpty: yığının boş olub-olmadığını yoxlayır.

Java-da yığın Stack sinfi ilə təmsil olunur və bu sinif Vector-in alt sinfidir.

// Stack istifadəsi nümunəsi
import java.util.Stack;

public class StackExample {

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

        stack.push("Birinci"); // Elementlərin əlavə olunması
        stack.push("İkinci");
        stack.push("Üçüncü");

        System.out.println("Yığının tepe nöqtəsi: " + stack.peek()); // Yuxarıdakı elementi gör

        while (!stack.empty()) { // Yığın boş deyil
            System.out.println("Çıxarırıq: " + stack.pop()); // Elementləri çıxarırıq
        }
    }
}

Müasir Java inkişafında tövsiyə olunan və daha yaxşı performans təmin edən alternativ ArrayDeque-dən istifadə etməkdir, çünki bu daha yaxşı performans göstərir.

// ArrayDeque istifadə nümunəsi
import java.util.ArrayDeque;
import java.util.Deque;

public class ArrayDequeStackExample {

    public static void main(String[] args) {
        Deque<String> stack = new ArrayDeque<>(); // Deque-ni yığın kimi istifadə etmək

        stack.push("Birinci"); // Elementlərin əlavə olunması
        stack.push("İkinci");
        stack.push("Üçüncü");

        System.out.println("Yığının tepe nöqtəsi: " + stack.peek()); // Yuxarıdakı elementi gör

        while (!stack.isEmpty()) { // Yığın boş deyil
            System.out.println("Çıxarırıq: " + stack.pop()); // Elementləri çıxarırıq
        }
    }
}

Yığınların tətbiqləri:

  • Aritmetik ifadələrin hesablanması (məsələn, tərs Polşa notasyonu ilə).
  • Redaktə proqramlarında əməliyyatların geri alınması/yenidən tətbiqi (Ctrl+Z/Ctrl+Y).
  • Əməliyyat sistemində funksiyaların çağırışlarının idarə olunması.
  • Rekursiv alqoritmlər.
  • Qraf və ağacların gəzintisi (dərinliklə axtarış).