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).