Darsliklar Java Stack va Queue

Java Java Stack va Queue

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.

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