Sobes.tech
Intern

Stacklar nima?

sobes.tech AI

AIdan javob

Yig'indi, LIFO (Last-In, First-Out) tamirga ega bo'lgan ma'lumotlar tuzilmasidir. Elementlar faqat bir uchidan, yigining tepaligi deb ataladigan joydan qo'shiladi va olib tashlanadi.

Asosiy operatsiyalar:

  • push: elementni yigining tepasiga qo'shish.
  • pop: elementni yigining tepasidan olib tashlash va uni qaytarish.
  • peek: yigining tepasidagi elementning qiymatini uning olib tashlanmasdan olish.
  • isEmpty: yigin bo'sh yoki yo'qligini tekshirish.

Java'da yigin Stack sinfi bilan ifodalanadi, u Vector ning kichik sinfidir.

// Stackdan foydalanish misoli
import java.util.Stack;

public class StackExample {

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

        stack.push("Birinchi"); // Elementlar qo'shish
        stack.push("Ikkinchi");
        stack.push("Uchinchi");

        System.out.println("Yig'in tepaligi: " + stack.peek()); // Eng yuqori elementni ko'rish

        while (!stack.empty()) { // Yig'in bo'sh emas
            System.out.println("Olib tashlaymiz: " + stack.pop()); // Elementlarni olib tashlash
        }
    }
}

Zamonaviy Java dasturlashda tavsiya etilgan va yaxshiroq ishlashni ta'minlaydigan alternativ — ArrayDeque ni yigin sifatida ishlatish, chunki u yaxshiroq ishlashni ta'minlaydi.

// ArrayDeque ni yigin sifatida ishlatish misoli
import java.util.ArrayDeque;
import java.util.Deque;

public class ArrayDequeStackExample {

    public static void main(String[] args) {
        Deque<String> stack = new ArrayDeque<>(); // Deque ni yigin sifatida ishlatish

        stack.push("Birinchi"); // Elementlar qo'shish
        stack.push("Ikkinchi");
        stack.push("Uchinchi");

        System.out.println("Yig'in tepaligi: " + stack.peek()); // Eng yuqori elementni ko'rish

        while (!stack.isEmpty()) { // Yig'in bo'sh emas
            System.out.println("Olib tashlaymiz: " + stack.pop()); // Elementlarni olib tashlash
        }
    }
}

Yig'inlarning qo'llanilishi:

  • Arifmetik ifodalarni hisoblash (masalan, teskari polsha yozuvi bilan).
  • O'chirish/ takrorlash operatsiyalarini matn muharrirlarida (Ctrl+Z/Ctrl+Y).
  • Operatsion tizimda funksiyalar chaqiruvlarini boshqarish.
  • Rekursiv algoritmlar.
  • Graf va daraxtlarni yurish (chuqurlik bo'yicha qidirish).