[C] liste chainée, passage des pointeurs
Résolu
kaham
Messages postés
194
Statut
Membre
-
kaham Messages postés 194 Statut Membre -
kaham Messages postés 194 Statut Membre -
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
- Liste code ascii - Guide
- Passage qwerty azerty - Guide
- Liste déroulante en cascade - 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.