Sobes.tech
Junior — Middle

Ikki tomonlama bog'langan ro'yxatga element qo'shish operatsiyasining vaqt murakkabligi qanday aniqlanadi?

sobes.tech AI

AIdan javob

Ikki tomonlama bog'langan ro'yxatga element qo'shish operatsiyasining vaqt murakkabligi, bizda joylashuvga ko'rsatkich bor yoki yo'qligiga bog'liq:

  • Agar qo'shish uchun joylashuvdagi tugunga ko'rsatkich bo'lsa, qo'shish O(1) da amalga oshadi, chunki faqat bir nechta ko'rsatkichlarni o'zgartirish kerak.
  • Agar avval joylashuvni topish kerak bo'lsa, qidiruv vaqti ro'yxatning o'lchamiga bog'liq bo'ladi (O(n)), va o'zi qo'shish esa O(1).

Berilgan tugundan keyin qo'shish misoli:

 type Node struct {
    value int
    prev  *Node
    next  *Node
}

func insertAfter(node *Node, newNode *Node) {
    newNode.prev = node
    newNode.next = node.next
    if node.next != nil {
        node.next.prev = newNode
    }
    node.next = newNode
}