Sobes.tech
Junior — Middle

Stack məlumat strukturasının əsas üstünlükləri və çatışmazlıqları nələrdir?

sobes.tech Süni İntellekt

AI-dan cavab

Stack (Stack) — bu LIFO (Last In, First Out) tamoyiliga asoslangan ma'lumotlar tuzilmasi bo'lib, so'nggi qo'shilgan element birinchi chiqariladi.

Afzalliklar:

  • Amalga oshirish va foydalanish oson.
  • Yuqori tezlikda yuqori elementga kirish (push, pop, peek operatsiyalari O(1) da bajariladi).
  • Daraxtlarni aylanib chiqish, harakatlarni bekor qilish, tahlil qilish kabi teskari tartibda ishlash bilan bog'liq vazifalar uchun juda mos.

Kamchiliklar:

  • Sınırlı erişim: sadece üstteki öğe ile çalışılabilir, rastgele erişim mümkün değildir.
  • Stack o'lchami cheklangan bo'lishi mumkin (masalan, dasturdagi chaqiruv stacki), bu esa to'ldirishga olib kelishi mumkin.

Go tilida misol:

package main
import "fmt"

type Stack []int

func (s *Stack) Push(v int) {
    *s = append(*s, v)
}

func (s *Stack) Pop() (int, bool) {
    if len(*s) == 0 {
        return 0, false
    }
    index := len(*s) - 1
    elem := (*s)[index]
    *s = (*s)[:index]
    return elem, true
}

func main() {
    var s Stack
    s.Push(10)
    s.Push(20)
    fmt.Println(s.Pop()) // 20, true
    fmt.Println(s.Pop()) // 10, true
}