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), ако няма директен достъп до възела.