Insertion en tête de liste chainée

Résolu
Auguste23 Messages postés 5 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. Auguste23 Messages postés 5 Statut Membre
       
      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
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Auguste23 Messages postés 5 Statut Membre
       
      j'ai l'impression que tu ne partages qu'une partie de ton code.
      0
    3. Auguste23 Messages postés 5 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      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
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Auguste23 Messages postés 5 Statut Membre
       
      ton problème est dans la fonction afficherDebFin: examine là de plus près.
      0
    5. Auguste23 Messages postés 5 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Merci beaucoup, j'ai trouvé mon erreur !
      0