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
}