Sobes.tech
Junior — Middle

İki tərəfli əlaqəli siyahıya element əlavə etmə əməliyyatının vaxt mürəkkəbliyi necə müəyyən edilir?

sobes.tech Süni İntellekt

AI-dan cavab

İki yönlü bağlı listenin bir öğesinin eklenme işleminin zaman karmaşıklığı, ekleme konumuna işaret eden bir göstergeye sahip olup olmamıza bağlıdır:

  • Eğer ekleme yapılacak düğümden sonra gelen düğüme işaret eden bir gösterge zaten varsa, ekleme O(1) sürede gerçekleşir, çünkü sadece birkaç göstergeyi değiştirmek yeterlidir.
  • Eğer önce ekleme konumunu bulmamız gerekiyorsa, arama süresi listenin boyutuna bağlıdır (O(n)), ve ekleme kendisi O(1) olur.

Belirli bir düğümden sonra ekleme örneği:

 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
}