Junior — Middle
Kokia yra laiko sudėtingumas pridėti naują elementą prie viengubo susietojo sąrašo pabaigos?
sobes.tech AI
Atsakymas iš AI
Pridėti naują elementą į paprastąjį susietąjį sąrašą laiko sudėtingumas priklauso nuo to, ar sąraše yra nuoroda į paskutinį elementą (uodegą).
- Jei yra nuoroda į uodegą, pridėjimas vyksta per O(1), nes galima tiesiogiai pasiekti paskutinį elementą ir pridėti naują.
- Jei nuoroda nėra, reikia pereiti visą sąrašą nuo galvos iki pabaigos, tai užtrunka O(n) laiko, kur n yra elementų skaičius sąraše.
Pavyzdys su nuoroda į uodegą:
class Node {
var value: Int
var next: Node?
init(value: Int) {
self.value = value
}
}
class LinkedList {
var head: Node?
var tail: Node?
func append(_ value: Int) {
let newNode = Node(value: value)
if let tailNode = tail {
tailNode.next = newNode
} else {
head = newNode
}
tail = newNode
}
}
Čia pridėjimas vyksta per pastovų laiką — O(1).