Queue məlumat strukturu
-
Queue nədir?
Queue (növbə) — First-In-First-Out (FIFO - İlk Daxil Olan İlk Çıxır) prinsipi ilə işləyən bir məlumat strukturudur. Queue-da elementlər sona əlavə edilir və ön hissədən çıxarılır.
Queue aşağıdakı sahələrdə geniş istifadə olunur:
- Arxa planda işləyən proseslər (məsələn, mesaj sistemləri);
- Resursların yüklənməsi (məsələn, şəkil və ya fayl yükləmə növbələri);
- Onlayn oyunlarda oyunçuların növbəyə salınması;
- Çap və tapşırıqların emalı (məsələn, printer növbələri).
Queue-in JavaScript-də implementasiyası
Queue üçün əsas class-lar
Queue yaratmaq üçün əvvəlcə Node və Queue classlarını müəyyən etməliyik.
Node classı:
- Constructor qəbul etdiyi
value
parametrinithis.value
-ə mənimsədir; this.next
default olaraqnull
olur.
Queue classı:
- Constructor heç bir parametr qəbul etmir, amma
this.first
vəthis.last
dəyərlərinull
olur; this.size
dəyişəni isə 0-dır.
class Node { constructor(value) { this.value = value; this.next = null; } } class Queue { constructor() { this.first = null; this.last = null; this.size = 0; } }
Element əlavə etmə (Enqueue) — O(1)
Queue-ya sona element əlavə etmək üçün enqueue() metodunu yazırıq.
Addım-addım izah:
- Yeni bir
Node
yaradırıq və ona dəyər ötürürük. - Əgər queue boşdursa, first və last propertiləri bu yeni node-a bərabər olur.
- Əks halda, mövcud
last
-ınnext
propertiyini yeni node-a yönəldirik. last
propertiyini bu yeni node kimi təyin edirik.- Queue-nin ölçüsünü (
size
) artırırıq və qaytarırıq.
Kod:
enqueue(value) { const newNode = new Node(value); if (!this.first) { this.first = newNode; this.last = newNode; } else { this.last.next = newNode; this.last = newNode; } return ++this.size; }
Element silmə (Dequeue) — O(1)
Queue-dan başdan element silmək üçün dequeue() metodunu yazırıq.
Addım-addım izah:
- Əgər queue boşdursa (
this.first === null
),null
qaytarırıq. - Mövcud
first
dəyərini müvəqqəti (temp
) dəyişəndə saxlayırıq. - Əgər queue-da tək element varsa (
first === last
), last-ınull
edirik. - First dəyərini
this.first.next
-ə təyin edirik. - Queue-nin ölçüsünü (
size
) azaldırıq və silinmiş elementin (temp
) dəyərini qaytarırıq.
Kod:
dequeue() { if (!this.first) return null; const temp = this.first; if (this.first === this.last) { this.last = null; } this.first = this.first.next; this.size--; return temp.value; }
Nəticə
Queue FIFO prinsipi ilə işləyən bir məlumat strukturudur və proqramlaşdırmada geniş istifadə olunur. Element əlavə etmə və silmə əməliyyatları O(1) vaxt mürəkkəbliyinə malikdir.
Bu məqalədə Queue-in JavaScript-də necə qurulmasını və enqueue/dequeue əməliyyatlarının necə həyata keçirildiyini öyrəndik. Queue, xüsusilə resurs yüklənməsi, oyunçuların idarə edilməsi və tapşırıqların emalı kimi sahələrdə geniş istifadə edilir.
Bilik paylaşdıqca artan bir sərvətdir