Pb de comparaison entre deux liste chainée

Fermé
elwess20 Messages postés 26 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011 - Modifié par elwess20 le 13/01/2011 à 20:09
 EDSON - 16 mai 2012 à 10:11
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
13 janv. 2011 à 20:32
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 26 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
14 janv. 2011 à 00:51
merciii beaucoup pour votre réponse,c'est résolut merci infiniment
0
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