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 :
Ma méthode prenant en paramètre un tableau dynamique et donnant en sortie une liste chainée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
"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 !
Partager