Junior — Middle
Kuidas määrata kahepoolse ühendatud nimekirja elemendi sisestamise operatsiooni ajakulude keerukus?
sobes.tech AI
Vastus AI-lt
Kahepoolse seotud nimekirja elemendi lisamise operatsiooni ajakulu sõltub sellest, kas meil on näitaja lisamise asukohale:
- Kui juba on näitaja sellele sõlmele, millele järgneb element, siis lisamine toimub O(1) aja jooksul, kuna tuleb muuta vaid mõningaid näitajaid.
- Kui esmalt tuleb leida lisamise koht, sõltub otsingu aeg nimekirja suurusest (O(n)), ja ise lisamine — O(1).
Näide lisamisest antud sõlme järel:
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
}