Sobes.tech
Junior — Middle

Kā tiek noteikta elementa ievietošanas operācijas laika sarežģītība divvirzienu saistītajā sarakstā?

sobes.tech AI

Atbilde no AI

Divkārši saistīta saraksta elementa pievienošanas operācijas laika sarežģītība ir atkarīga no tā, vai mums ir norāde uz pievienošanas pozīciju:

  • Ja jau ir norāde uz mezglu, pēc kura jāievieto elements, tad pievienošana tiek veikta O(1) laikā, jo ir nepieciešams mainīt tikai dažus norādītājus.
  • Ja vispirms ir jāatrod pievienošanas pozīcija, meklēšanas laiks būs atkarīgs no saraksta lieluma (O(n)), bet pati pievienošana — O(1).

Piemērs, kā pievienot pēc norādīta mezgla:

 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
}