Sobes.tech
Junior — Middle

Como avaliar a complexidade algorítmica da operação de atualização de um elemento numa lista ligada?

sobes.tech IA

Resposta da IA

A atualização de um elemento numa lista ligada geralmente requer primeiro encontrar esse elemento e depois alterar o seu valor.

  • Se tiver um ponteiro ou referência para o nó necessário, a atualização do valor é uma operação O(1).
  • Se precisar primeiro encontrar o elemento por índice ou valor, a busca leva O(n), onde n é o número de elementos na lista.

Exemplo em 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; // atualização O(1)
  }
}

No total, a complexidade geral de atualizar um elemento por índice é O(n), se não houver acesso direto ao nó.