Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Kompüter elmi
  3. Data strukturu
  4. Queue məlumat strukturu

Queue məlumat strukturu

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb Data strukturu
queuedequeuefifodatatype
1 Yazı 1 Yazarlar 27 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • codexC Oflayn
    codexC Oflayn
    codex
    üzərində yazmışdı sonuncu dəfə tərəfindən redaktə edilib
    #1

    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 parametrini this.value-ə mənimsədir;
    • this.next default olaraq null olur.

    Queue classı:

    • Constructor heç bir parametr qəbul etmir, amma this.first və this.last dəyərləri null 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:

    1. Yeni bir Node yaradırıq və ona dəyər ötürürük.
    2. Əgər queue boşdursa, first və last propertiləri bu yeni node-a bərabər olur.
    3. Əks halda, mövcud last-ın next propertiyini yeni node-a yönəldirik.
    4. last propertiyini bu yeni node kimi təyin edirik.
    5. 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:

    1. Əgər queue boşdursa (this.first === null), null qaytarırıq.
    2. Mövcud first dəyərini müvəqqəti (temp) dəyişəndə saxlayırıq.
    3. Əgər queue-da tək element varsa (first === last), last-ı null edirik.
    4. First dəyərini this.first.next-ə təyin edirik.
    5. 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.

    1 cavab Son cavab
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    • İlk yazı
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar