Liste chainée

[Résolu]
Signaler
Messages postés
10
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
4 novembre 2008
-
Messages postés
10
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
4 novembre 2008
-
Salut! je m'appelle josiane.Je suis au burkina .j'ai un problème et je voudrais de l'aide
En faite on me demande de faire une liste chainée de caractère.mais ces elements ne doivent pas se ressembler.
je suis debutante et je ne maitrise pas trop les listes.si quelqu'un pourait me donner une piste ça me fera plaisir.
merci d'avance!!!

5 réponses

Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008

Reprenons mon exemple pour l'adapter à ton cas si tu veux :

struct monMaillon* debut,iter;
bool existeDeja = false;
char caractereAjouter = 'c';    // ici le caractere a ajouter dans la liste, tu peux le recuperer autrement bien sur, c'est juste un exemple

for(iter=debut;iter.maillonSuivant!=null;iter=iter.maillonSuivant)
{
    // ici on va tester dans chaque element si le caractere est deja present
    if(iter.monCaractere == caractereAjouter)
    {
             break;
    }
  
   /* Si on arrive a la fin de la liste sans etre sorti du for, c'est que le caractere n'existe pas encore, alors on cree un nouveau öaillon pour le rajouter*/
   if(iter.maillonSuivant==null)
 
{

            struct monMaillon* nouveauMaillon;
            nouveauMaillon.monCaractere = caractereAjouter;
            iter.maillonSuivant = nouveauMaillon;
  }

}

(Encore une fois je ne garantis pas l'exactitude syntaxique absolue du bout de code ci dessus ;)  )

~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008

Bonjour,
Que veux tu dire par "ces elements ne doivent pas se ressembler" ??

Sinon une liste chaînée n'est rien de plus qu'une ensemble de structures qui contiennent un pointeur vers un structure du meme type :

struct  monMaillon
{
char monCaractere;
monMaillon* maillonSuivant;
}

Et ainsi tu parcours ta liste de maillon en maillon :

monMaillon debut,milieu,fin,iter;

debut.maillonSuivant = &milieu;
milieu.maillonSuivant = &fin;

for(iter=debut;iter.maillonSuivant!=null;iter=*iter.maillonSuivant)
{
    printf("caratere : %c \n",iter.monCaractere);
}

(Le code au dessus n'est pas garanti sans erreur syntaxique et autres, c'est juste pour te donner un exemple ;)   )

~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Yop,

Si tu dois vraiment former une liste chainée de caractère , fait comme liverion t'as conseilé , sinon utilise un tableau de caractères .

char szText[50+1] (+1 pour zero fin de chaine)

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
10
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
4 novembre 2008

Salut!!!
je comprends un peu l'exemple.Mais ce que je voulais c'est créer une liste chainée de caractère, ensuite ajouter des éléments a cette liste tout en se rassurant qu'il n'existe déjà ces éléments;c'est à dire que si je veut ajouter un élément,je dois verifier qu'il  n'existe pas dans la liste avant de l'ajouter.
Merci!!!  
Messages postés
10
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
4 novembre 2008

merci beaucoup  en faite ce que je voulais comprendre!!!