Junior — Middle
Ako sa určuje časová zložitosť operácie vloženia prvku do dvojzávitového zoznamu?
sobes.tech AI
Odpoveď od AI
Časová zložitosť operácie vstupu prvku do dvojzávitovej zoznamu závisí od toho, či máme ukazovateľ na pozíciu vstupu:
- Ak už máme ukazovateľ na uzol, za ktorým je potrebné vložiť prvok, je vkladanie vykonané v O(1), pretože stačí zmeniť niekoľko ukazovateľov.
- Ak je potrebné najskôr nájsť pozíciu vstupu, čas vyhľadávania závisí od veľkosti zoznamu (O(n)), a samotný vstup — O(1).
Príklad vstupu za daný uzol:
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
}