Sobes.tech
Junior — Middle

Çift bağlı listenin içine bir öğe ekleme işleminin zaman karmaşıklığı nasıl belirlenir?

sobes.tech yapay zeka

AI'dan gelen yanıt

İkili 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
}