Sobes.tech
Junior — Middle

Ի՞նչ է կապված ցանկի վերջում տարր ավելացնելու գործողության ժամանակային բարդությունը։

sobes.tech AI

Պատասխան AI-ից

Կապակցված ցանկի վերջում տարր ավելացնելու գործողության ժամանակային բարդությունը կախված է նրանից, թե ցանկը ունի արդյոք վերջին տարրին ցուցիչ:

  • Եթե կա ցուցիչ (tail), ապա ավելացումը կատարվում է O(1) ժամանակում, քանի որ կարելի է անմիջապես ավելացնել նոր տարր վերջինից հետո:
  • Եթե ցուցիչ չկա, ապա անհրաժեշտ է անցնել ամբողջ ցանկը, որպեսզի գտնեք վերջին տարրին, և այդ դեպքում բարդությունը կլինի O(n), որտեղ n — տարրերի քանակն է:

Օրինակ՝ ցուցիչով:

class LinkedList {
    Node head;
    Node tail;

    void addLast(int value) {
        Node newNode = new Node(value);
        if (head == null) {
            head = newNode;
            tail = newNode;
        } else {
            tail.next = newNode;
            tail = newNode;
        }
    }
}