Bonjour à tous,
J'ai un problème avec un exercice sur les listes ;
Soit la définition d'une liste :
Mon but est de rechercher une valeur dans un liste et de renvoyer sa position dans la liste et puis de compter le nombre d'occurence de ce nombre.Code:typedef struct cellule { float donnee; // Création de la structure cellule struct cellule *suivant; } cellule; typedef struct cellule Liste;
Mes fonctions sont :
etCode:int rechercher_valeur (Liste *L,int nb) // Permet de rechercher une valeur dans une liste et de renvoyer sa position { int position=0; // variable de renvoit Liste *p=L; // pointeur temporaire pour le parcours while(p=!NULL) { if(p->donnee==nb) p=p->suivant; position++; } return position; }
et mon main est :Code:int occurence_valeur (Liste *L,int valeur) { int i=0; Liste *p=L; //Pointeur temporaire /* Si la liste est vide, on renvoie 0 */ if(p == NULL) return 0; while((L = rechercher_valeur(L, valeur)) != NULL) { p = p->suivant; i++; } return i; }
Seulement mon programme s’arrête directement après avoir demandé : " Quel valeur chercher vous ? ".Code:int main() { int taille_liste=0; int longueur=0; int position=0; int occurence=0; Liste *maliste; printf("Combien de cellules avez-vous besoin (>1) :"); scanf("%d",&taille_liste); maliste=cree_Liste(taille_liste); longueur=longueur_Liste(maliste); printf("\nLa longueur de la liste est %d\n",longueur); affiche_Liste(maliste); printf("Quelle valeur rechercher vous ?"); int valeur=0; scanf("%d",&valeur); position=rechercher_valeur(maliste,valeur); printf("La position est %d\n\n",position); printf("Le nombre revient %d fois \n",occurence); maliste = supprimer_debut(maliste); affiche_Liste(maliste); longueur=longueur_Liste(maliste); printf("La longueur de la liste est %d",longueur); initilisation_a_zero_Liste(maliste); affiche_Liste(maliste); return 0;
Je ne trouve pas mon erreur dans la fonction rechercher_valeur , pourriez-vous m'aider ?
NB: La création de ma liste et les autres fonctions utilisées dans le main fonctionne.
Merci d'avance,
Maxime 10
-----