IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Insertion en queue d'une liste chainée


Sujet :

C

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Insertion en queue d'une liste chainée
    Bonjour
    Je suis encore débutante en listes chaînées, j'ai beaucoup de lacune, et j'ai un exercice qui demande d'écrire la fonction qui permet d’insérer un élément en queue de liste.
    Je possède deux fonctions, une j'ai écrite et l'autre qui ne m'appartient pas. Je cherche celle qui serait plus correcte et plus performante et donc la mieux notée, aidez-moi s'il vous plaît à corriger les erreurs. J'ai énormément besoin de votre aide, et merci de bien vouloir m'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    typedef struct liste{
    int val;
    struct liste* svt;
    }liste;
    1ère fonction: (Celle que j'ai faite)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    liste* InsertQueue(liste* L, int n){
    liste* maillon=(liste*)malloc(sizeof(liste));
    maillon->val=n;
    maillon->svt=NULL;
    if(L==NULL){return maillon;}
    else{
    liste* ptr=L;
    while(ptr!=NULL) { ptr=ptr->svt;}
    ptr->svt=maillon;
    return L;
    }
    }
    2ème fonction: (Celle de mon ami)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void InsertQueue(liste* L, int n){
    new=(liste*)malloc(sizeof(liste));
    new->svt=NULL;
    tmp=L;
    while(tmp->svt!=NULL) {tmp=tmp->svt;}
    tmp->svt=new;
    }

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    La différence essentielle entre les 2 fonctions est :
    * la seconde ne déclare pas ses variables new et tmp!
    * la seconde plantera si la liste est initialement vide!
    * la première est correcte.

    Pour améliorer :
    * on ne caste pas le retour de malloc (en langage C).
    * attention à l'indentation, c'est important la lisibilité.
    * attention au nommages, ne pas utiliser de variables commençant par une majuscule et une variable doit être compréhensible donc a plusieurs lettres.
    * la syntaxe d'utilisation de la seconde fonction est préférable car c'est la liste passée en entrée qui est modifiée.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par dalfab Voir le message
    * la première est correcte.
    Non: ligne 9, on sort su while quand ptr vaut null, et ligne 10 on veut accéder à ptr->svt! pas bon!

    faut changer en while(ptr->svt != NULL)

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2012, 07h36
  2. Tri par insertion sur une liste chainé simple.
    Par loula427 dans le forum Débuter
    Réponses: 6
    Dernier message: 21/03/2011, 14h54
  3. Insertion en queue d'une liste
    Par issa2910 dans le forum Langage
    Réponses: 1
    Dernier message: 13/01/2008, 21h43
  4. Réponses: 28
    Dernier message: 24/05/2006, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo