Sobes.tech
Junior — Middle

Tek bağlı listenin sonuna yeni bir öğe eklemenin zaman karmaşıklığı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Tekrar ekleme işleminin zaman karmaşıklığı, tek bağlı listenin sonuna yeni bir öğe eklenirken listenin son öğesine (kuyruk) işaretçi olup olmamasına bağlıdır.

  • Eğer kuyruk işaretçisi varsa, ekleme O(1) sürede gerçekleşir, çünkü doğrudan son öğeye erişip yeni ekleyebilirsiniz.
  • Eğer yoksa, listenin başından sonuna kadar tüm listeyi dolaşmanız gerekir, bu da O(n) zaman alır, burada n listedeki öğe sayısıdır.

Kuyruğa işaretçi ile örnek:

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
    }
}

Burada, ekleme işlemi sabit zamanlıdır O(1).