Bonjour,
Je fais une implémentation de liste statique et je suis confronté à un étrange problème, n'arrivant pas à le rectifier malgré plusieurs tentative de debugg, je laisse d'autres yeux voir ce que je n'aurais pas vu.
En gros un tableau (ou liste) d'objet (Cellule) est créé et j'ajoute avec la méthode insererListe le data dans l'objet. Mais si je cré une liste de taille 4 par exemple initialisé normalement à None (voir objet Cellule), si j'insère une seul donnée et que je fais ensuite un print de la liste logiquement je devrais recevoir en sortie une seule valeur or il affiche 4 fois les memes valeurs :roll:
pour l'objet Cellule
pour l'objet listeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 class Cellule: def __init__(self): self.__next = -2 self.__data= None def GetData(self): return self.__data def GetSuivant(self): return self.__next def SetData(self,Obj): self.__data = Obj def SetSuivant(self, n): self.__next= n
et le fichier d'appelCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 from Cellule import Cellule class Liste: def __init__ (self,t=3): self.taille= t+1 self.tete = 0 self.tab = [Cellule()]*(self.taille) self.tab[0].SetSuivant(-1) self.curseur = 0 def getCurseur(self): return self.tab[self.curseur].GetSuivant() def allerAuDebut(self): self.curseur = self.tete def voir(self): if (self.getCurseur() != -1): return self.tab[self.getCurseur()].GetData() else: return None def avancer(self): if (self.getCurseur() != -1): self.curseur = self.tab[self.curseur].GetSuivant() return True else: return False def inserer (self, Obj): i= 0 while ((i< self.taille) and (self.tab[i].GetSuivant() !=-2)): i=i+1 if i == self.taille: return False else: self.tab[i].SetData(Obj) self.tab[i].SetData(Obj) self.tab[i].SetSuivant(self.avancer()) self.tab[self.curseur].SetSuivant(i) return True def supprimer(self): if (self.getCurseur() !=-1): self.n = self.getCurseur() self.tab[self.curseur].SetSuivant(self.tab[self.n].GetSuivant()) self.tab[self.n].SetSuivant = -2 return True else: return False def afficheListe(self): for i in range(self.taille): print self.tab[i].GetData()
enfin le résultat dans le terminalCode:
1
2
3
4
5
6 from Liste import Liste MyListe = Liste() MyListe.inserer(8) MyListe.afficheListe()
Code:
1
2
3
4
5
6 Trashy:~ Trashy$ python /python/main.py 8 8 8 8