Sobes.tech
Junior — Middle

Yagona bog'langan ro'yxatning oxiriga yangi element qo'shishning vaqt murakkabligi qanday?

sobes.tech AI

AIdan javob

Yangi elementni oddiy bog'langan ro'yxatning oxiriga qo'shish vaqt murakkabligi ro'yxat oxiriga (qovurg'a) ishoratchi bor-yo'qligiga bog'liq.

  • Agar qovurg'a ishoratkich bor bo'lsa, qo'shish O(1) da amalga oshiriladi, chunki to'g'ridan-to'g'ri oxirgi elementga murojaat qilish va yangi element qo'shish mumkin.
  • Agar ishoratchi bo'lmasa, butun ro'yxat boshidan oxirigacha yurish kerak, bu O(n) vaqt oladi, bu yerda n ro'yxatdagi elementlar soni.

Qovurg'a ishoratkich bilan misol:

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

Bu yerda, qo'shish vaqt bo'yicha doimiy, ya'ni O(1).