Sobes.tech
Junior — Middle

Как се определя времевата сложност на операцията по вмъкване на елемент в двусвързан списък?

sobes.tech AI

Отговор от AI

Времевата сложност на операцията за вмъкване на елемент в двусвързания списък зависи от това дали имаме указател към позицията за вмъкване:

  • Ако вече имаме указател към възела, след който трябва да се вмъкне елемент, вмъкването се извършва за O(1), тъй като е достатъчно да се променят няколко указателя.
  • Ако трябва първо да намерим позицията за вмъкване, времето за търсене ще зависи от размера на списъка (O(n)), а самото вмъкване — O(1).

Пример за вмъкване след даден възел:

 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
}