Sobes.tech
Junior — Middle

Πώς αξιολογείται η αλγοριθμική πολυπλοκότητα της ενημέρωσης ενός στοιχείου σε μια συνδεδεμένη λίστα;

sobes.tech AI

Απάντηση από AI

Η ενημέρωση ενός στοιχείου σε μια συνδεδεμένη λίστα συνήθως απαιτεί πρώτα να βρείτε αυτό το στοιχείο και στη συνέχεια να αλλάξετε την τιμή του.

  • Αν έχετε έναν δείκτη ή αναφορά στο απαραίτητο κόμβο, η ενημέρωση της τιμής είναι μια λειτουργία O(1).
  • Αν πρέπει πρώτα να βρείτε το στοιχείο με βάση το δείκτη ή την τιμή, η αναζήτηση διαρκεί O(n), όπου n είναι ο αριθμός των στοιχείων στη λίστα.

Παράδειγμα σε Dart (Flutter):

class Node {
  int value;
  Node? next;

  Node(this.value);
}

void updateNodeValue(Node head, int index, int newValue) {
  Node? current = head;
  int i = 0;
  while (current != null && i < index) {
    current = current.next;
    i++;
  }
  if (current != null) {
    current.value = newValue; // ενημέρωση O(1)
  }
}

Συνολικά, η συνολική πολυπλοκότητα της ενημέρωσης ενός στοιχείου κατά δείκτη είναι O(n), αν δεν υπάρχει άμεση πρόσβαση στον κόμβο.