Affectation d'une adresse dans une structure?
Résolu
ENITIEN
-
ENITIEN2 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
ENITIEN2 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai le code suivant qui est celui de création de liste chainée(empilement)qui fonctionne très bien
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct Noeud { int num;struct Noeud * suivant;} noeud;
noeud *premier=NULL;
void insert (int x)
{noeud *p = premier;
premier = (noeud*) malloc(sizeof(noeud));
assert (premier != NULL);
premier->num = x;
premier->suivant = p;}
main()
{int x;noeud *p;
puts("Saisir une serie d entiers suivi d un caractere : ");
while (scanf("%d", &x) == 1) insert(x);
puts("\n Serie de nombre lus (affiches dans l ordre inverse): ");
for(p = premier; p!=NULL;p = p->suivant)
printf("%5d\n", p->num);
return 0;
}
ce que je comprends pas est l'instruction écrite en gras : en effet *p est un noeud(c à d une structure) et premier est une adresse
alors comment on peut affecter premier dans *p?
merci d'avance
j'ai le code suivant qui est celui de création de liste chainée(empilement)qui fonctionne très bien
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct Noeud { int num;struct Noeud * suivant;} noeud;
noeud *premier=NULL;
void insert (int x)
{noeud *p = premier;
premier = (noeud*) malloc(sizeof(noeud));
assert (premier != NULL);
premier->num = x;
premier->suivant = p;}
main()
{int x;noeud *p;
puts("Saisir une serie d entiers suivi d un caractere : ");
while (scanf("%d", &x) == 1) insert(x);
puts("\n Serie de nombre lus (affiches dans l ordre inverse): ");
for(p = premier; p!=NULL;p = p->suivant)
printf("%5d\n", p->num);
return 0;
}
ce que je comprends pas est l'instruction écrite en gras : en effet *p est un noeud(c à d une structure) et premier est une adresse
alors comment on peut affecter premier dans *p?
merci d'avance
A voir également:
- Affectation d'une adresse dans une structure?
- Créer une adresse hotmail - Guide
- Adresse mac - Guide
- Comment saisir une adresse url - Guide
- Darkino nouvelle adresse - Guide
- Comment créer une adresse gmail - Guide
7 réponses
Je ne vois pas le problème:
- on n'utilise pas '*p' mais 'p', or 'p' est l'adresse d'un noeud (déclaré comme noeud*),
- l'adresse du premier noeud est fixé à NULL, car c'est une adresse particulière puisqu'impossible (donc reconnaissable), et il faut bien, au départ, définir un noeud (même vide) puisque pour créer un noeud il faut remplir le champ 'suivant'.
A priori le programme me paraît correct.
Bonne réflexion.
- on n'utilise pas '*p' mais 'p', or 'p' est l'adresse d'un noeud (déclaré comme noeud*),
- l'adresse du premier noeud est fixé à NULL, car c'est une adresse particulière puisqu'impossible (donc reconnaissable), et il faut bien, au départ, définir un noeud (même vide) puisque pour créer un noeud il faut remplir le champ 'suivant'.
A priori le programme me paraît correct.
Bonne réflexion.
Salut,
en effet *p est un noeud(c à d une structure) et premier est une adresse
alors comment on peut affecter premier dans *p?
Pour mieux comprendre écrit comme ça
premier est un pointeur de type noeud*
p est un pointeur de type noeud*
ou
en effet *p est un noeud(c à d une structure) et premier est une adresse
alors comment on peut affecter premier dans *p?
Pour mieux comprendre écrit comme ça
noeud* premier=NULL;
void insert (int x)
{noeud* p = premier;
premier est un pointeur de type noeud*
p est un pointeur de type noeud*
ou
noeud* premier;
premier=NULL;
void insert (int x)
{noeud* p;
p = premier; // p et pas *p
merciiiiiii beaucoup pour vos réponses
reste juste une seule chose : si je comprends bien le type noeud* représente "l'adresse d'une structure?sinon c'est quoi le type noeud*?
reste juste une seule chose : si je comprends bien le type noeud* représente "l'adresse d'une structure?sinon c'est quoi le type noeud*?
Re,
typedef struct Noeud { int num;struct Noeud * suivant;} noeud;
noeud* c'est un type pointeur de structure qui pointe sur une structure de type nœud que tu as défini.
typedef struct Noeud { int num;struct Noeud * suivant;} noeud;
noeud* c'est un type pointeur de structure qui pointe sur une structure de type nœud que tu as défini.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci beaucoup :))
avant je croyais que lorsqu'on déclare int *p je croyais que *p est une entier alors que c pas le cas apparemment
avant je croyais que lorsqu'on déclare int *p je croyais que *p est une entier alors que c pas le cas apparemment