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