Pb de comparaison entre deux liste chainée
elwess20
Messages postés
28
Statut
Membre
-
EDSON -
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
2eme liste
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
mercii
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:
- Pb de comparaison entre deux liste chainée
- Liste déroulante excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Comparaison million milliard - Accueil - Technologies
- Comment faire deux colonnes sur word - Guide
- Deux ecran pc - Guide
1 réponse
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
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);
}
}
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
}///