![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
isoman
salut si je modifier une liste chainée avec un passage par adresse je dois bien faire comme ça ?
1 2 3 4 5 6 7 8
|
typedef struct cellule
{
int data;
structure cellule *suivant;
}une_cellule;
typedef struct liste *une_cellule;
void fonction(liste *l); |
je demande prcq ce matin un prof m'a dit que ce n'etait pas necessaire
![8O](https://www.developpez.net/forums/images/smilies/icon_eek.gif)
et m'a fait douté de moi
![:cry:](https://www.developpez.net/forums/images/smilies/icon_cry.gif)
. Qui a raison moi ou lui ?
merci bcp
Avec ça, tu peux ajouter à une liste existante, mais tu ne peux ni créer ni ajouter en tête (enfin, c'est techniquement possible, mais personne n'en saura rien).
Tu peux faire ceci :
liste *fonction(liste *l);
qui s'utilise comme ceci :
1 2 3 4
|
liste *maliste = ajout(NULL, data);
maliste = ajout (maliste, data);
maliste = ajout (maliste, data); |
ou
1 2 3 4 5
|
liste *maliste = NULL;
maliste = ajout (maliste, data);
maliste = ajout (maliste, data);
maliste = ajout (maliste, data); |
ou bien utiliser une structure qui garde la tête (et la queue, ça accelère les traitements genre ajout en queue...)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
struct node
{
struct node *p_next;
int data;
};
struct list
{
struct node *p_head;
struct node *p_tail;
};
void ajout (struct list *p, int data); |
C'est beaucoup plus clair...
Partager