Pb de comparaison entre deux liste chainée

elwess20 Messages postés 28 Statut Membre -  
 EDSON -
Bonsoir mes amis,

j'ai 2 liste chainée et chaque liste a une donnée de chaine de caractère,alors comment je peut parcourir les2 listes et comparer a chaque fois si les 2 chaines sont égaux ou non?
mercii

1ere liste
struct Liste_regle {
               char *regle;
               char *rf;
               struct Liste_regle *psuivant_r;
              };


2eme liste
struct Liste_fait *Liste_fait;                
struct Liste_fait {
               char *fait;
               struct Liste_fait *psuivant_f


programme de recherche
var i ,c'est le nombre maillons pour la 2eme liste
var j,c'est le nombre de maillon de premier liste
struct Liste_fait *parcour=f;
for(k=0;k<i;k++)
 { struct Liste_regle *parcour2=r;
   for(t=0;t<j;t++)  
    {
  if(strstr(parcour->fait,parcour2->rf)!=0)
  { printf("%s",parcour2->regle);
     parcour2=parcour2->psuivant_r;
  }
}
  parcour=parcour->psuivant_f;}


mercii
A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Pour comparer des chaînes de caractères c'est strcmp qu'il faut utiliser.

De plus, tu te déplaces mal dans tes listes. Le déplacement dans la première liste doit ce faire dans le for(k) et pas après. Celui dans la deuxième liste est bien placé sauf qu'il ne devrait pas dépendre du test if.

Remarque : il n'est pas nécessaire de connaître la taille d'une liste pour la parcourir, il suffit de faire une condition d'arrêt parcour!=NULL

struct Liste_fait *parcour;
struct Liste_regle *parcour2;

for(parcour=f; parcour!=NULL; parcour=parcour->psuivant_f)
{
      for(parcour2=r; parcour2!=NULL; parcour2=parcour2->psuivant_r)  
      {
            if(strcmp(parcour->fait,parcour2->rf)==0)
                  printf("%s\n",parcour2->regle);
      }
}
0
elwess20 Messages postés 28 Statut Membre
 
merciii beaucoup pour votre réponse,c'est résolut merci infiniment
0
EDSON
 
salut aidez moi svp!!!!! programme C

est t il possible de passer en parametre deux liste chaine et de travaillez dessu dans cette fonction? car il me retourne un faut resultat en retournant le premier parametre meme sans avoir travailler avec. je me dit que c'est impossible de passer en parametre deux liste chainee dans une fonction.

en supposant que L1,L2 son deux liste chaine de type liste

liste addition(liste L1,liste L2){
return L1
}///
0