Insertion en tête de liste chainée

Résolu
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

  1. Contributeur
    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?
    1. 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
    2. Contributeur
      @Auguste23j'ai l'impression que tu ne partages qu'une partie de ton code.
    3. @yg_beVoilà 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 ) ) 
    4. Contributeur
      @Auguste23ton problème est dans la fonction afficherDebFin: examine là de plus près.
    5. @yg_beMerci beaucoup, j'ai trouvé mon erreur !