Junior — Middle
Kako se određuje vremenska složenost operacije umetanja elementa u dvostruko povezanu listu?
sobes.tech АИ
Одговор од АИ
Vremenska složenost operacije umetanja elementa u dvostruko povezanu listu zavisi od toga da li imamo pokazivač na poziciju umetanja:
- Ako već postoji pokazivač na čvor nakon kojeg treba umetnuti element, umetanje se vrši u O(1), jer je dovoljno promeniti nekoliko pokazivača.
- Ako prvo treba pronaći poziciju umetanja, vreme pretraživanja će zavisiti od veličine liste (O(n)), a samo umetanje je O(1).
Primer umetanja nakon datog čvora:
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
}