Sobes.tech
Junior — Middle

Ինչպե՞ս է որոշվում տարր ավելացնելու գործողության ժամանակային բարդությունը երկկողմանի կապակցված ցուցակում։

sobes.tech AI

Պատասխան AI-ից

Երկկողմանի կապված ցանկի տարր ավելացնելու գործողության ժամանակաբանական բարդությունը կախված է նրանից, ունե՞մք մենք տեղադրման դիրքի ցուցիչ:

  • Եթե արդեն ունենք նշիչ այն հանգույցի վրա, որի հետո պետք է ավելացնել տարր, ապա ավելացումը կատարվում է O(1) ժամանակում, քանի որ միայն մի քանի ցուցիչներ պետք է փոխել:
  • Եթե նախ պետք է գտնենք տեղադրումը, որոնման ժամանակը կախված է ցանկի չափից (O(n)), իսկ ինքնը՝ O(1):

Օրինակ՝ ավելացում նշված հանգույցից հետո:

 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
}