Junior — Middle
Kaip nustatoma įdėjimo į dvipusį sąrašą operacijos laiko sudėtingumas?
sobes.tech AI
Atsakymas iš AI
Dvigubai susietos sąrašo elemento įterpimo operacijos laiko sudėtingumas priklauso nuo to, ar turime nuorodą į įterpimo vietą:
- Jei jau turime nuorodą į mazgą, po kurio reikia įterpti elementą, įterpimas atliekamas per O(1), nes pakanka pakeisti keletą nuorodų.
- Jei pirmiausia reikia rasti įterpimo vietą, paieškos laikas priklausys nuo sąrašo dydžio (O(n)), o pats įterpimas — O(1).
Pavyzdys, kaip įterpti po nurodyto mazgo:
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
}