(C] liste chainée
Fermé
PIERRE
-
21 sept. 2007 à 10:48
w1sm3rhi11 Messages postés 372 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 30 mars 2009 - 24 sept. 2007 à 11:45
w1sm3rhi11 Messages postés 372 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 30 mars 2009 - 24 sept. 2007 à 11:45
A voir également:
- (C] liste chainée
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste de diffusion whatsapp - Guide
- Liste groupe whatsapp - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
29 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 sept. 2007 à 13:31
21 sept. 2007 à 13:31
courant->suivant = supp_element->suivant; si j'ai bien compris ?
Non.
supp_element c'est un pointeur que j'utilise pour avoir une référence vers l'élément que je doit supprimer
ça me permettre de faire free() sur supp_element
donc à eviter cette interpretation, même si ça pourrait être valable
je fait courant->suivant = courant->suivant->suivant justement pour montrer l'enchaînement ;-)
Non.
supp_element c'est un pointeur que j'utilise pour avoir une référence vers l'élément que je doit supprimer
ça me permettre de faire free() sur supp_element
donc à eviter cette interpretation, même si ça pourrait être valable
je fait courant->suivant = courant->suivant->suivant justement pour montrer l'enchaînement ;-)
De plus, tu utilise souvant :
typedef struct ElementListe
{
char *donnee;
struct ElementListe *suivant;
} Element;
Element *elem ;
... /* du code */
elem->suivant->suivant
peut se remplacer par si je suis là logique :
typedef struct ElementListe *PElement ;
typedef struct ElementListe
{
char *donnee;
PElement suivant;
} Element;
PElement elem ;
elem->suivant-suivant
? Element *elem ~= PElement elem reviens a la même :s normalement
typedef struct ElementListe
{
char *donnee;
struct ElementListe *suivant;
} Element;
Element *elem ;
... /* du code */
elem->suivant->suivant
peut se remplacer par si je suis là logique :
typedef struct ElementListe *PElement ;
typedef struct ElementListe
{
char *donnee;
PElement suivant;
} Element;
PElement elem ;
elem->suivant-suivant
? Element *elem ~= PElement elem reviens a la même :s normalement
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 sept. 2007 à 18:14
22 sept. 2007 à 18:14
Salut,
typedef struct ElementListe *PElement ;
typedef struct ElementListe
{
char *donnee;
PElement suivant;
} Element;
PElement elem ;
PElement c'est un pointeur du type ElementListe* , ce qui te permettra de definir le pointeur suivant dans la structure Element
En revanche elem c'est un pointeur de type Element*
donc il faut declaré
lami20j
typedef struct ElementListe *PElement ;
typedef struct ElementListe
{
char *donnee;
PElement suivant;
} Element;
PElement elem ;
PElement c'est un pointeur du type ElementListe* , ce qui te permettra de definir le pointeur suivant dans la structure Element
En revanche elem c'est un pointeur de type Element*
donc il faut declaré
typedef struct ElementListe *PElement ; typedef struct ElementListe { char *donnee; PElement suivant; } Element; Element elem ;--
lami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
w1sm3rhi11
Messages postés
372
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
30 mars 2009
53
24 sept. 2007 à 10:39
24 sept. 2007 à 10:39
typedef struct ElementListe *PElement ;
typedef struct ElementListe
{
char *donnee;
PElement suivant;
} Element;
PElement elem ;
marche tout aussi bien ;)
Il suffira alors d'utiliser elem->suivant pour pointer sur l'élément suivant de la liste :)
typedef struct ElementListe
{
char *donnee;
PElement suivant;
} Element;
PElement elem ;
marche tout aussi bien ;)
Il suffira alors d'utiliser elem->suivant pour pointer sur l'élément suivant de la liste :)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
24 sept. 2007 à 10:43
24 sept. 2007 à 10:43
Oui, biensûr.
Pourquoi faire un typedef si on ne l'utilise pas
en plus c'est plus clair de dire qu'on crée un élément de la liste
ça reviens en fait à une histoire d'alias, le principe reste le même
faire un alias d'un alias ce n'est pas très top :-))
Pourquoi faire un typedef si on ne l'utilise pas
typedef struct ElementListe{ }Element;
en plus c'est plus clair de dire qu'on crée un élément de la liste
ça reviens en fait à une histoire d'alias, le principe reste le même
faire un alias d'un alias ce n'est pas très top :-))
w1sm3rhi11
Messages postés
372
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
30 mars 2009
53
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
24 sept. 2007 à 10:53
24 sept. 2007 à 10:53
C'est sur, juste que je trouve ton exemple un peu alambiqué enfin si ca marche et que PIERRE comprend c'est le principal ;)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
24 sept. 2007 à 11:21
24 sept. 2007 à 11:21
et que PIERRE comprend c'est le principal ;)
D'accord avec toi, c'est ça mon but ;-)
Et voici sa réponse
D'accord merci, je viens de teste ton code est tout est bcp plus clair.
juste que je trouve ton exemple un peu alambiqué
Ben, justement il n'est pas alambique (ce qui ne vas changer pas ton avis ;-)
Au contraire j'ai crée le code dans le but didactic pour comprendre les opérations sur les listes chaînées.
Et je l'ai fait puisque à vrai dire je n'ai pas vu encore une présentation basique à la portée pour tout débutant.
Chaque fonction pourra être étudier sans se soucier d'une autre.
Si un structuration des opérations ne te semble pas organisée alors je suis désolé.
C'est loin d'être une bonne implementation.
Une impléméntation se fait en fonction des besoins.
Bref, je le trouve plûtot organisé, quoi que assez long, ce qui est d'ailleurs normal vu que pour chaque opération j'ai crée une fonction.
Je pense que c'est essentiel de comprendre le principe et ensuite de comprendre les opérations qu'on peut effectuer sur une liste
- sauvegarder le début et la fin de la liste pour garder le contrôle
- incrementation ou decrementation de la taille en fonction des opérations d'insertion ou suppression
- allocation de la mémoire pour le nouveau élément
- insertion dans une liste vide
- insertion au début
- insertion à la fin
- insertion ailleurs dans la liste
- suppression au début
- suppression à la fin
- suppression ailleurs dans la liste
- affichage de la liste
- detruire la liste
J'ai fait aussi une représentation pour chaque opérations pour être encore plus clair.
On pourrait écrire une seule fonction qui groupe les opérations d'insertion ainsi qu'une seule fonction qui groupe les opérations de suppression (voir Maîtrise des algorithmes en C)
D'accord avec toi, c'est ça mon but ;-)
Et voici sa réponse
D'accord merci, je viens de teste ton code est tout est bcp plus clair.
juste que je trouve ton exemple un peu alambiqué
Ben, justement il n'est pas alambique (ce qui ne vas changer pas ton avis ;-)
Au contraire j'ai crée le code dans le but didactic pour comprendre les opérations sur les listes chaînées.
Et je l'ai fait puisque à vrai dire je n'ai pas vu encore une présentation basique à la portée pour tout débutant.
Chaque fonction pourra être étudier sans se soucier d'une autre.
Si un structuration des opérations ne te semble pas organisée alors je suis désolé.
C'est loin d'être une bonne implementation.
Une impléméntation se fait en fonction des besoins.
Bref, je le trouve plûtot organisé, quoi que assez long, ce qui est d'ailleurs normal vu que pour chaque opération j'ai crée une fonction.
Je pense que c'est essentiel de comprendre le principe et ensuite de comprendre les opérations qu'on peut effectuer sur une liste
- sauvegarder le début et la fin de la liste pour garder le contrôle
- incrementation ou decrementation de la taille en fonction des opérations d'insertion ou suppression
- allocation de la mémoire pour le nouveau élément
- insertion dans une liste vide
- insertion au début
- insertion à la fin
- insertion ailleurs dans la liste
- suppression au début
- suppression à la fin
- suppression ailleurs dans la liste
- affichage de la liste
- detruire la liste
J'ai fait aussi une représentation pour chaque opérations pour être encore plus clair.
On pourrait écrire une seule fonction qui groupe les opérations d'insertion ainsi qu'une seule fonction qui groupe les opérations de suppression (voir Maîtrise des algorithmes en C)
w1sm3rhi11
Messages postés
372
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
30 mars 2009
53
24 sept. 2007 à 11:30
24 sept. 2007 à 11:30
Pour ma compréhension ca ira ^^ j'ai largement utilisé les listes chaînées et créé certaines du genre hétérogène ou des trucs comme ca.
Ce que je voulais dire est simplement que je trouvais la structure de la liste un peu compliquée pour les débutants qui se lancent la dedans.
Apparemment j'ai eu tort ^^ en tout cas vu que c'est toi qui a fait ca c'est du beau travail :)
Ce que je voulais dire est simplement que je trouvais la structure de la liste un peu compliquée pour les débutants qui se lancent la dedans.
Apparemment j'ai eu tort ^^ en tout cas vu que c'est toi qui a fait ca c'est du beau travail :)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
24 sept. 2007 à 11:43
24 sept. 2007 à 11:43
que je trouvais la structure de la liste un peu compliquée pour les débutants qui se lancent la dedans.
je vais tenir compte de ton opinion ;-) et je vais essayer de modifier.
Merci ;-)
je vais tenir compte de ton opinion ;-) et je vais essayer de modifier.
Merci ;-)
w1sm3rhi11
Messages postés
372
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
30 mars 2009
53
24 sept. 2007 à 11:45
24 sept. 2007 à 11:45
Je t'en prie :)
Bon courage @+
Bon courage @+