Liste chainée

Résolu
zitiba Messages postés 10 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 4 novembre 2008 - 20 juil. 2008 à 19:49
zitiba Messages postés 10 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 4 novembre 2008 - 29 sept. 2008 à 16:02
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

Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
28 juil. 2008 à 09:57
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 !!
3
Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
23 juil. 2008 à 10:09
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 !!
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
23 juil. 2008 à 21:51
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]
0
zitiba Messages postés 10 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 4 novembre 2008
26 juil. 2008 à 12:15
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!!!  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zitiba Messages postés 10 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 4 novembre 2008
29 sept. 2008 à 16:02
merci beaucoup  en faite ce que je voulais comprendre!!!
0
Rejoignez-nous