Rechercher : dans
Par :

[C] liste chainée, passage des pointeurs

Dernière réponse le 24 mai 2009 à 23:00:00 kaham, le 20 mai 2009 à 17:02:15 
 Signaler ce message aux modérateurs

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 :

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.
Configuration: Windows XP
Firefox 3.0.10

Meilleures réponses pour « [C] liste chainée, passage des pointeurs » dans :
Langage C - Les chaînes de caractères Voir Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Liste simplement chaînée VoirLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion...
Liste doublement chaînée VoirLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la...
Introduction à la STL en C++ (standard template library) VoirIntroduction Principales classes de la STL std::pair std::list std::vector std::set std::map Les iterators iterator et const_iterator reverse_iterator et const_reverse_iterator Les algorithmes ...
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...

1

kaham, le 23 mai 2009 à 10:33:09

Je re up le post, j'ai vraiment besoin d'une réponce.

Merci.

Répondre à kaham

2

Lamp's, le 23 mai 2009 à 11:21:25

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.

Répondre à Lamp's

3

 kaham, le 24 mai 2009 à 23:00:00

Voila j'ai trouvé, mon prototype de fonction était incorrect :
void search(struct elem *tete, int val, struct elem *r, struct elem *q)

et voici celui qui le remplace :
void search(struct elem *tete, int val, struct elem **r, struct elem **q)

Répondre à kaham