cherche éclaircissement sur les Listes Chainées !
Bonjour,
étudiant en deuxième année d'informatique à la fac (Tours), nous avons un cours qui s'intitule Algorithmique avancée. Dans celui ci, nous sommes actuellement en train de voir les listes Chainées (qui ne sont pas de bases dans Python si je ne m'abuse, il n'y a que des tableaux dynamiques, mais encore une fois, peut être que je me trompe !)
J'ai un problème dans la syntaxe que l'on utilise pour définir une liste chainée, je m'explique.
Nous partons d'une liste, ou tableau dynamique présent de base sur python , par exemple : p=[1,2,3,4], et au travers d'une méthode nous récupérons une liste chainée, à savoir une liste dont chaque valeur est liée à la suivante grâce à l'adresse mémoire (je ré-précise ceci simplement pour être sur que l'on parle bien de la même chose !)
Seulement j'ai du mal à comprendre dans le code concretement comment cela fonctionne et comme on arrive à "chainer" une valeur à l'adresse mémoire de la valeur suivante, voici le code que j'ai :
Ma classe Liste :
Code:
1 2 3 4 5 6 7
| class Liste():
def __init__(self, head, tail=None):
'''
Create a new linked list
'''
self.valeur = head
self.suivant=tail |
Ma méthode prenant en paramètre un tableau dynamique et donnant en sortie une liste chainée :
Code:
1 2 3 4 5 6 7 8 9 10
| import Liste
def init(L):
res=Liste(L[0])
p=res
for i in range (1, len(L)):
tmp=Liste(L[i])
p.suivant=tmp
p=p.suivant
return res |
De ce que j'ai comprit pour l'instant, l'instruction "res=Liste(L[0])" fixe res à l'adresse de départ, afin de ne pas perdre le contenu de la liste.
"p=res" sert à initialiser p qui sera celui qui se déplace (très très mal dit désolé ...)
La boucle for sert à avancer dans notre tableau dynamique de départ, mais je ne comprend pas les instructions à l'intérieur de cette boucle. Est ce que quelqu'un pourrait m'éclaircir ce point ci ?
Merci d'avance ! J'espère ne pas avoir oublier d'information !