Junior — Middle
Hoe beoordeel je de algoritmische complexiteit van het bijwerken van een element in een gekoppelde lijst?
sobes.tech AI
Antwoord van AI
Het bijwerken van een element in een gekoppelde lijst vereist meestal eerst het vinden van dat element en vervolgens het wijzigen van de waarde.
- Als je een pointer of verwijzing naar de benodigde knoop hebt, is het bijwerken van de waarde een O(1)-bewerking.
- Als je eerst het element moet vinden op basis van index of waarde, kost de zoekactie O(n), waarbij n het aantal elementen in de lijst is.
Voorbeeld in 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) bijwerking
}
}
In totaal is de totale complexiteit van het bijwerken van een element op index O(n), als er geen directe toegang tot de knoop is.