Sobes.tech
Junior — Middle

Comment détermine-t-on la complexité temporelle de l'opération d'insertion d'un élément dans une liste doublement chaînée?

sobes.tech IA

Réponse de l'IA

La complexité temporelle de l'opération d'insertion d'un élément dans une liste doublement chaînée dépend de si nous avons un pointeur vers la position d'insertion:

  • Si un pointeur vers le nœud après lequel insérer existe déjà, l'insertion se fait en O(1), car il suffit de modifier quelques pointeurs.
  • Si nous devons d'abord trouver la position d'insertion, le temps de recherche dépendra de la taille de la liste (O(n)), et l'insertion elle-même sera O(1).

Exemple d'insertion après un nœud donné:

 type Node struct {
    value int
    prev  *Node
    next  *Node
}

func insertAfter(node *Node, newNode *Node) {
    newNode.prev = node
    newNode.next = node.next
    if node.next != nil {
        node.next.prev = newNode
    }
    node.next = newNode
}