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
}