Sobes.tech
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
}