Insert pour une liste liée pseudo-code
Dans l'Introduction à l'Algorithme Ed 3, j'ai lu le pseudo-code algo pour insérer un élément dans une linkedlist, et je ne comprends pas l'étape intermédiaire.
x.prev = L.head
if L.head != NIL
L.head.prev = x
L.head = x
x.prev = NIL
et si mon original de la liste chaînée est HEAD -- 4 -- 24
, je comprends que les étapes sont les suivantes:
-
TÊTE -- 4 -- 24
-
x -- 4 -- 24
-
TÊTE -- x -- 4 -- 24
avec les 2. correspondant à
x.prev = L.head
Pourquoi nous avons pour insérer x avant de la tête avec
if L.head != NIL
L.head.prev = x
?
Pourrait smbdy préciser ?
- Vous avez changé le pseudo-code de PLC, était-il intentionnel? La première ligne doit être
x.next = L.head
pasx.prev = L.head
- oui merci beaucoup
Vous devez vous connecter pour publier un commentaire.
Permet de dire, d'Abord la Tête est orientée vers le nœud [Y], cela signifie que [Y] est l'actuel directeur. Nous allons insérer un nouveau nœud [X], qui deviendra nœud de tête de notre liste, de sorte que la tête pointeur pointera sur [X].
Ici rappeler que, au début des temps (avant d'insérer quoi que ce soit à la liste) directeur de point Nul.
Laisse maintenant aller étape par étape avec le pseudo code pour voir ce qui se passe:
Situation actuelle de notre liste est:
Head -> [Y], [Y].prev -> NiL
, la tête est orientée vers le à [Y], jusqu'à ce que nous avons de changer le pointeur de Tête, chaque fois que nous utilisons la Tête que vous pouvez penser/lire [Y]. Aujourd'hui à la tête de nœud [Y] fois [X], donc permet de mettre à côté de [X] = [Y]Après la première déclaration, nous avons
[X].next->[Y], Head->[Y], [Y].prev->NiL
Après la 3e ligne, nous pouvons définir notre liste de Tête pointeur vers le point [X]
Astuce est que
Puis, algo va comme suit