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

pour l'objet Cellule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
pour l'objet liste

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
et le fichier d'appel

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
from Liste import Liste
 
MyListe = Liste()
MyListe.inserer(8)
MyListe.afficheListe()
enfin le résultat dans le terminal
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Trashy:~ Trashy$ python /python/main.py
8
8
8
8