Junior — Middle
İki tərəfli əlaqəli siyahıya element əlavə etmə əməliyyatının vaxt mürəkkəbliyi necə müəyyən edilir?
sobes.tech Süni İntellekt
AI-dan cavab
İki yönlü bağlı listenin bir öğesinin eklenme işleminin zaman karmaşıklığı, ekleme konumuna işaret eden bir göstergeye sahip olup olmamıza bağlıdır:
- Eğer ekleme yapılacak düğümden sonra gelen düğüme işaret eden bir gösterge zaten varsa, ekleme O(1) sürede gerçekleşir, çünkü sadece birkaç göstergeyi değiştirmek yeterlidir.
- Eğer önce ekleme konumunu bulmamız gerekiyorsa, arama süresi listenin boyutuna bağlıdır (O(n)), ve ekleme kendisi O(1) olur.
Belirli bir düğümden sonra ekleme örneği:
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
}