Junior — Middle
Jak se určuje časová složitost operace vložení prvku do oboustranně spojovaného seznamu?
sobes.tech AI
Odpověď od AI
Časová složitost operace vložení prvku do obousměrně spojovaného seznamu závisí na tom, zda máme ukazatel na pozici vložení:
- Pokud již máme ukazatel na uzel, za kterým je třeba vložit prvek, je vložení provedeno v O(1), protože stačí změnit několik ukazatelů.
- Pokud je třeba nejdříve najít pozici vložení, doba hledání závisí na velikosti seznamu (O(n)), a samotné vložení je O(1).
Příklad vložení za daný uzel:
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
}