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. Stack məlumat strukturu

Stack məlumat strukturu

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb Data strukturu
stackstructurelifo
2 Yazı 1 Yazarlar 70 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

    Stack Nədir?

    Stack — elementlərdən ibarət olan bir abstrakt məlumat strukturu və ya verilənlər tipi kimi istifadə olunur. Stack-in əsas xüsusiyyəti ondan ibarətdir ki, elementlər yalnız bir tərəfdən - “üst” (top) hissədən əlavə edilir və çıxarılır. Bu səbəbdən LIFO (Last-In-First-Out - Son Daxil Olan İlk Çıxır) prinsipinə əsaslanır.

    Stack-lər proqramlaşdırmada geniş istifadə olunur və aşağıdakı sahələrdə tətbiq edilir:

    • Funksiya çağırışlarının idarə edilməsi (call stack);
    • Undo/Redo əməliyyatları (məsələn, mətn redaktorlarında geri qaytarma);
    • Brauzer tarixçəsinin idarə edilməsi (routing, tarix obyekti stack kimi işləyir).

    Stack-in JavaScript-də implementasiyası

    Stack üçün əsas class

    Stack-i yaratmaq üçün əvvəlcə Node və Stack class-ları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.

    Stack 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 Stack {
      constructor() {
        this.first = null;
        this.last = null;
        this.size = 0;
      }
    }
    

    Element əlavə etmə (Push) — O(1)

    Stack-ə element əlavə etmək üçün push() 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 stack boşdursa, first və last propertiləri bu yeni node-a bərabər olur.
    3. Əgər stack-də artıq element varsa:
      • Mövcud first dəyərini müvəqqəti (temp) dəyişəndə saxlayırıq.
      • Yeni node-u first kimi təyin edirik.
      • Yeni first-in next propertiyini əvvəlki first-ə yönəldirik.
    4. Stack-in ölçüsünü (size) artırırıq.

    Kod:

    push(value) {
      const newNode = new Node(value);
      
      if (!this.first) {
        this.first = newNode;
        this.last = newNode;
      } else {
        const temp = this.first;
        this.first = newNode;
        this.first.next = temp;
      }
    
      return ++this.size;
    }
    

    Element Silmə (Pop) — O(1)

    Stack-in üstündən element silmək üçün pop() metodunu yazırıq.

    Addım-addım izah:

    1. Əgər stack 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 stack-də tək element varsa (first === last), last-i null edirik.
    4. First dəyərini this.first.next-ə təyin edirik.
    5. Stack-in ölçüsünü (size) azaldırıq və silinmiş elementin (temp) dəyərini qaytarırıq.

    Kod:

    pop() {
      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ə

    Stack, proqramlaşdırmada geniş istifadə olunan mühüm məlumat strukturudur. LIFO prinsipi ilə işləyir və element əlavə etmə və silmə əməliyyatları O(1) vaxt mürəkkəbliyinə malikdir.

    Bu məqalədə Stack-in JavaScript-də necə qurulmasını və push/pop əməliyyatlarının necə həyata keçirildiyini öyrəndik. Stack, xüsusilə funksiya çağırışlarının idarə olunması, undo/redo əməliyyatları və brauzer tarixçəsinin idarə edilməsi kimi sahələrdə geniş istifadə edilir.

    1 cavab Son cavab
    • codexC Oflayn
      codexC Oflayn
      codex
      üzərində yazmışdı sonuncu dəfə tərəfindən redaktə edilib
      #2

      Azerbaijan Python User Group-dan Şəhriyar abimizin Stack-la bağlı paylaşdığı gözəl yazısı.

      Link Preview Image
      Data_Structures_Algo_Python/book/6.Stack_Yığın.md at master · AzePUG/Data_Structures_Algo_Python

      Azərbaycan dilində "Data strukturları və Alqoritmlər" mövzusunda Open Source kitab. - Data_Structures_Algo_Python/book/6.Stack_Yığın.md at master · AzePUG/Data_Structures_Algo_Python

      favicon

      GitHub (github.com)

      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