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