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
}