IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Parcours de pointeurs et suppression


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut Parcours de pointeurs et suppression
    Hello ! Il neige à Montréal !

    Trois questions petites questions sur les pointeurs :

    • Ce que j'ai écrit supprime bien le noeud ?

    • Dois-je faire un free(), c'est à dire libérer la mémoire du noeud supprimé après ?
    • Pour utiliser ce code à partir d'autres fichier C, est-il obligatoire de mettre extern ? Sinon pourquoi ? Dois-je ou puis-je le mettre sur le typeDef Racines ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct Racines {
    	val_t *objet;
    	struct Racines *next;
    } Racines;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    extern void delete_root(val_t *node, Racines *l) {
    	// on supprime dés qu'on trouve, sinon rien
    	Racines R = *l;
    	Racines temp;
    	while (R->objet != *node) {
    		temp = R;
    		R = R->next;
    	}
    	// si on a trouve le noeud a supprimer
    	if (R->objet == *node) {
    		temp->next = R->next;
    	}
    	else {
    		fprintf("ce noeud n\'existe pas !");
    	}
    }
    Merci de vos réponses !

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    00/ Ce code ne compile pas!
    1/R et Temp ne sont pas des pointeurs mais utilisés comme tels.
    2/(R->objet != *node) : si node n'est pas défini, alors tu ne sorts jamais de la boucle.
    3/ Si l'objet est le premier, temp est invalide.
    Donc, pour répondre à tes questions: non, oui, à lire.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    J'ai résolu les points que tu m'as dis, ça donne donc ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    extern void delete_root(val_t *node, Racines *l) {
    	// on supprime dés qu'on trouve, sinon rien
    	Racines r = *l;
    	Racines temp = *r->next;
    	while (r->objet != *node && temp->next != NULL) {
    		r = r->next;
    	}
    	// si on a trouve le noeud a supprimer
    	if (r->objet == *node) {
    		temp = *r->next;
    		if (*temp->next != NULL) {
    			r = temp->next;
    		}
    		else {
    			r -> next = NULL;
    		}
    	}
    	else {
    		printf("ce noeud n\'existe pas !");
    	}
    }
    Donc si j'ai bien compris les extern sont indispensables pour les variable mais pas pour les fonctions (si on veut les utiliser ailleurs).

Discussions similaires

  1. Parcours de liste avec suppression d'éléments
    Par biaggi dans le forum Langage
    Réponses: 2
    Dernier message: 11/09/2008, 10h00
  2. prob parcours map clé pointeur
    Par allserv dans le forum C++
    Réponses: 12
    Dernier message: 02/01/2008, 20h31
  3. [MySQL] Parcours d'un tableau et suppression des entrées
    Par padoberg dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/07/2006, 13h41
  4. problème de suppression de pointeur!
    Par gaoul dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2006, 16h48
  5. Réponses: 4
    Dernier message: 26/09/2005, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo