Verilənlər strukturu - Queue və Stack
Verilənlər strukturu və ya data strukturlar istənilən bir proqramlaşdırma dilində ən vacib hissələrdən biridir. Adətən, kod yazılan zaman alqoritm və məlumatlar (yəni, data) əsas rol oynayır. Data strukturlar məlumatların saxlanma yollarıdır. Bu prosessdə bir çox modellərdən istifadə edilir: Stack, Queue, Array, Linked List, Graph və s.
Gəlin bunlardan Stack və Queue data strukturlarına nəzər salaq. Queue və Stack çox istifadə olunan iki dinamik verilənlər strukturudur. Onların necə və hansı hallarda istifadə olunduğunu anlamaq üçün hər birinə daha dərindən baxaq.
STACK
Stack strukturu, LIFO (Last In First Out) prinsipi ilə işləyən data struktur növlərindən biridir. Java'da Stack Vektor sinfindən törəyən abstrakt bir sinifdir.
Bu anlayışı daha yaxşı başa düşməyiniz üçün üst-üstə yığılmış kublar təsəvvür edin. Bu yığının yalnız yuxarı hissəsinə girişiniz var. Bir kubu Stack-in yuxarı hissəsindən çıxardığınızda, götürdüyünüz kub sonuncu əlavə etdiyiniz kubdur.
Stack-in dörd əsas metodu var:
- push() – stack listinə yeni element əlavə edir
- pop() – sonuncu elementi qaytarır və onu listdən silir
- peek() – sonuncu elementi qaytarır (listdən silmədən)
- isEmpty() – stack-in boş olub olmadığını yoxlayır
Stack hansı hallarda istifadə edilir?
1) Hər hansısa bir tətbiqdə irəli / geri naviqasiya funksiyasını nümunə olaraq göstərmək olar. Məsələn, geri naviqasiya düyməsinə kliklədiyimizdə bir internet brauzerinə nəzər yetirək. Bir istifadəçinin baxdığı cari saytın URL-i Stack-də sonuncu element sayılır. Yuxarıda qeyd etdiyimiz pop() funksiyasi ilə URL-ləri Stack-dən silərək geriyə doğru hərəkət edə bilərik.
2) Stack-in digər bir istifadəsi isə mətn redaktorlarında geri qaytarmaq xüsusiyyətini təmin etməkdir. Əvvəlki mətn düzəlişlərini bir stack-də saxlayır və sonuncu dəyişiklikləri geri qaytara bilir.
3) Facebook-da son paylaşılan bir paylaşımın ana səhifədə önə çıxması da Stack-ə nümunədir.
QUEUE
Queue strukturu, FIFO (First In First Out) prinsipi ilə işləyən data struktur formalarından biridir. Javada Queue interface hesab edilir, yəni onu concrete bir sinifdə tətbiq etməliyisiniz. Adətən, LinkedList və ya PriorityQueue sinifləri ilə istifadə olunur.
Queue-lar siyahının əvvəlinə (head) və sonuna (tail) giriş təmin edir. Sadəcə bir ucundan kitablar əlavə etdiyiniz, digər ucundan da əlavə etdiyiniz qaydada kitabları çıxdığınız bir rəf təsəvvür edin.
Qısacası, birinci hansı element əlavə olunubsa, ən birinci də elə o element listdən çıxarılır.
Queue-in dörd əsas metodu var:
- enqueue() — Queue-nin sonuna yeni element əlavə edir
- dequeue() — listin əvvəlindəki elementi silir
- isEmpty() — Queue-nin boş olub olmadığını yoxlayır
- isFull() — Queue-nin dolu olub olmadığını yoxlamaq
- peek() — ən birinci elementin dəyərini onu silmədən almaq
Queue hansı hallarda istifadə edilir?
1) Queue-nin işlənmə sahəsinə resursun bir neçə istifadəçi arasında paylaşmasını göstərmək olar. Məsələn, CPU və Disk Scheduling.
2) Digər bir nümunə isə iki prosess arasında məlumatın asynchronously ötürülməsidir. Məsələn, IO buffer-lər, fayllar və s.
Beləliklə, artıq siz Stack və Queue anlayışları haqqında əsas məlumatlara sahibsiniz. Praktiki tapşırıqlar üçün aşağıdakı linkdən faydalana bilərsiniz.
Əlavə olaraq, bu kimi data struktur anlayışları və alqoritmlər üzrə daha dərin biliklərə sahib olmaq üçün ATL Akademiyada Proqramlaşdırmanın Əsasları tədris proqramına müraciət edə bilərsiniz.