Stack va Queue — ma’lum tartibda ishlaydigan ikki maxsus to’plam. Stack “oxirgi kirgan — birinchi chiqadi” (LIFO), Queue esa “birinchi kirgan — birinchi chiqadi” (FIFO) tamoyilida ishlaydi. Ular real hayotdagi jarayonlarni modellashtirishda bebaho.
Stack — elementlar faqat yuqoridan qo’shilib, yuqoridan olinadigan LIFO tuzilma. Queue — elementlar oxiriga qo’shilib, boshidan olinadigan FIFO tuzilma.
Stack — LIFO tamoyili
Stekni bir dasta tovoqqa qiyoslang: oxirgi qo’yilgan tovoq birinchi olinadi. push qo’shadi, pop yuqoridagini oladi:
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<String> stek = new Stack<>();
stek.push("birinchi");
stek.push("ikkinchi");
stek.push("uchinchi");
System.out.println(stek.pop()); // oxirgisi chiqadi
System.out.println(stek.peek()); // yuqoridagini ko'radi (olmaydi)
System.out.println(stek);
}
}
uchinchi
ikkinchi
[birinchi, ikkinchi]
pop oxirgi qo’shilgan "uchinchi" ni oldi (LIFO). peek esa yuqoridagini ko’rsatadi, ammo olib tashlamaydi. Stek “orqaga qaytish” (undo) yoki brauzer tarixida ishlatiladi.
Queue — FIFO tamoyili
Navbatni do’kondagi navbatga qiyoslang: birinchi kelgan birinchi xizmat oladi. offer qo’shadi, poll boshidagini oladi:
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue<String> navbat = new LinkedList<>();
navbat.offer("Farrux");
navbat.offer("Master Sherkulov");
navbat.offer("Aziz");
System.out.println(navbat.poll()); // birinchisi chiqadi
System.out.println(navbat.peek()); // keyingisini ko'radi
System.out.println(navbat);
}
}
Farrux
Master Sherkulov
[Master Sherkulov, Aziz]
poll birinchi qo’shilgan "Farrux" ni oldi (FIFO). Navbat vazifalarni tartib bilan qayta ishlashda — masalan, xabar navbati, buyurtmalar — ishlatiladi.
Stack va Queue farqi
Ikki tuzilmani jadvalda solishtiramiz:
| Xususiyat | Stack (LIFO) | Queue (FIFO) |
|---|---|---|
| Tamoyil | oxirgi kirgan — birinchi chiqadi | birinchi kirgan — birinchi chiqadi |
| Qo’shish | push |
offer |
| Olish | pop |
poll |
| Real misol | undo, brauzer tarixi | navbat, vazifalar |
Amaliy qo’llanish
Bu tuzilmalar amaliyotda juda ko’p uchraydi. Stack — matematik ifodalarni hisoblash, rekursiya, “orqaga” tugmasi uchun; Queue — vazifalarni navbat bilan bajarish, printer navbati, tarmoq so’rovlari uchun. To’g’ri tuzilmani tanlash muammoni tabiiy va samarali hal qiladi.
Xulosa
Bu bo’limda Stack (LIFO) va Queue (FIFO) tuzilmalarini, ularning push/pop va offer/poll metodlarini hamda amaliy qo’llanishini ko’rib chiqdik. Tartib muhim bo’lgan joyda bu tuzilmalar ideal. Keyingi darsda obyekt va sinflarga chuqurroq kirib boramiz.