Insertion en tête de liste chainée

Résolu/Fermé
Auguste23 Messages postés 4 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 18 février 2018 - 18 févr. 2018 à 10:24
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 18 févr. 2018 à 13:05
Bonjour,
Je commence avec les listes chainées et je n'arrive pas à créer une fonction qui insère une valeur en tête de liste et retourne la nouvelle liste chainée. Je ne vois pas où est mon erreur. Merci.
Voici mon programme:

class cMaillon :
def __init__(self , valeur ):
self.val = valeur
self.suiv = None

M1 = cMaillon(-10)
M2 = cMaillon(4)
M3 = cMaillon(21)

tete = M1
queue = tete
queue.suiv = M2
queue = queue.suiv
queue.suiv = M3
queue = queue.suiv

def ajouterEnTete ( L, X ):
nouveau = cMaillon(X)
nouveau.suiv = L
return nouveau

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
18 févr. 2018 à 11:35
bonjour,
peux-tu poster à nouveau ton code en utilisant la coloration syntaxique proposée par le forum?
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
"je n'arrive pas à créer une fonction": que se passe-t-il avec ton code?
0
Auguste23 Messages postés 4 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 18 février 2018
Modifié le 18 févr. 2018 à 12:02
Merci pour ta réponse

class cMaillon : 
   def __init__(self , valeur ): 
     self.val = valeur 
     self.suiv = None 

M1 = cMaillon(-10) 
M2 = cMaillon(4) 
M3 = cMaillon(21) 

tete = M1 
queue = tete 
queue.suiv = M2 
queue = queue.suiv 
queue.suiv = M3 
queue = queue.suiv 

def ajouterEnTete ( L, X ): 
   nouveau = cMaillon(X) 
   nouveau.suiv = L 
   return nouveau


le programme me renvoie la liste sans avoir ajouté la valeur en tête de liste
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Auguste23 Messages postés 4 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 18 février 2018
18 févr. 2018 à 12:12
j'ai l'impression que tu ne partages qu'une partie de ton code.
0
Auguste23 Messages postés 4 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 18 février 2018 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
18 févr. 2018 à 12:18
Voilà mon code en entier. Comme je n'ai pas de problème sur l'autre fonction, je n'ai pas voulu alourdir le message.

class cMaillon :
    def __init__(self , valeur ):
        self.val = valeur
        self.suiv = None
        
M1 = cMaillon(-10)
M2 = cMaillon(4)
M3 = cMaillon(21)

tete = M1
queue = tete
queue.suiv = M2
queue = queue.suiv
queue.suiv = M3
queue = queue.suiv

def afficherDebFin ( L ):
    courant = tete
    while courant != None:
        print ( courant.val )
        courant = courant.suiv

def ajouterEnTete ( L, X ):
    nouveau = cMaillon(X)   
    nouveau.suiv = L
    return  nouveau

afficherDebFin ( ajouterEnTete( tete, 31 ) ) 
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Auguste23 Messages postés 4 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 18 février 2018
18 févr. 2018 à 12:36
ton problème est dans la fonction afficherDebFin: examine là de plus près.
0
Auguste23 Messages postés 4 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 18 février 2018 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
18 févr. 2018 à 12:59
Merci beaucoup, j'ai trouvé mon erreur !
0