[C] liste chainée, passage des pointeurs
Résolu
kaham
Messages postés
180
Date d'inscription
Statut
Membre
Dernière intervention
-
kaham Messages postés 180 Date d'inscription Statut Membre Dernière intervention -
kaham Messages postés 180 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un probleme avec ma liste chainée formatée. Dans mon programme il y a 2 fonctions : une qui cherche l'emplacement croissant pour placer ma valeur et l'autre qui créé l'allocation et affecte les valeurs au pointeur.
les voici :
Les pointeurs "q" et "r" sont initialiser a NULL et apres le passage de la fonction "search()" il devraient prendre les valeurs de l'élément suivant et précédant le nouvelle élément. Mais dans mon cas il reste a NULL.
Je ne trouve pas la solution.
Merci de votre aide.
J'ai un probleme avec ma liste chainée formatée. Dans mon programme il y a 2 fonctions : une qui cherche l'emplacement croissant pour placer ma valeur et l'autre qui créé l'allocation et affecte les valeurs au pointeur.
les voici :
void search(struct elem *tete, int val, struct elem *r, struct elem *q){ int trouve = 0; q=tete; r=tete; while(q!=NULL && !trouve){ printf("tete = %ld\tq = %ld\tr = %ld\n", tete, q, r); if(q->info > val) trouve=1; else{ r=q; q=q->next; } printf("q = %ld\tr = %ld\n", q, r); system("pause"); } } void insert(struct elem *tete, int val){ struct elem *p=NULL,*q=NULL,*r=NULL; search(tete, val, r, q); p = (struct elem *)malloc(sizeof(struct elem)); if(p==NULL) printf("Memory allocation failed\n"); printf("q = %ld\tr = %ld\n", q, r); p->info = val; p->next = q; printf("p->info = %ld\tp->next = %ld\n", p->info, p->next); r->next = p; }
Les pointeurs "q" et "r" sont initialiser a NULL et apres le passage de la fonction "search()" il devraient prendre les valeurs de l'élément suivant et précédant le nouvelle élément. Mais dans mon cas il reste a NULL.
Je ne trouve pas la solution.
Merci de votre aide.
A voir également:
- [C] liste chainée, passage des pointeurs
- Liste déroulante excel - Guide
- Passage qwerty azerty - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste des appareils connectés - Guide
3 réponses
Il faut que ta fonction search renvoie la cellule sur laquelle tu veux te placer. Une fois dessus, tu créés ta nouvelle cellule et tu fais pointer la cellule sur laquelle tu te trouves sur la cellule que tu viens de créer. Ensuite, tu te déplace d'une cellule pour faire pointer la suite vers le reste de la liste chainée.