Sobes.tech
Junior — Middle

Sadə əlaqəli siyahının sonuna yeni element əlavə etməyin vaxt mürəkkəbliyi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Sadə əlaqəli siyahının sonuna yeni element əlavə etmənin vaxt mürəkkəbliyi siyahının sonuncu elementə (quyruq) işarəçisinin olub-olmamasından asılıdır.

  • Əgər quyruğa işarəçi varsa, əlavə O(1) vaxtında həyata keçirilir, çünki birbaşa sonuncu elementə müraciət edib yeni element əlavə etmək mümkündür.
  • Əks halda, bütün siyahını başdan sona qədər keçmək lazımdır, bu da O(n) vaxt alır, burada n siyahıdakı elementlərin sayıdır.

Quyruğa işarəçi ilə nümunə:

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, əlavə etmə əməliyyatı sabit vaxtda, yəni O(1), həyata keçirilir.