Listes chaînées
anthony
-
anthony -
anthony -
Bonjour,
Alors voila je suis en train de galère sur les listes chaînées je ne comprends vraiment rien.
Alors voici un code de liste chaînée simple :
bon alors ici ce que je ne comprends pas c'est pourquoi avoir mit un pointeur sur llist alors si j'aurais mis sa:
sa aurais revenu au même ???
et aussi pourquoi initialisé ma_liste1 a NULL, ma_liste1 n'est pas un pointeur, c'est une variable
Alors voila je suis en train de galère sur les listes chaînées je ne comprends vraiment rien.
Alors voici un code de liste chaînée simple :
#include <stdlib.h>
typedef struct element element;
struct element
{
int val;
struct element *nxt;
};
typedef element* llist;
int main(int argc, char **argv)
{
/* Déclarons 3 listes chaînées de façons différentes mais équivalentes */
llist ma_liste1 = NULL;
element *ma_liste2 = NULL;
struct element *ma_liste3 = NULL;
return 0;
}
bon alors ici ce que je ne comprends pas c'est pourquoi avoir mit un pointeur sur llist alors si j'aurais mis sa:
typedef element llist;
sa aurais revenu au même ???
et aussi pourquoi initialisé ma_liste1 a NULL, ma_liste1 n'est pas un pointeur, c'est une variable
A voir également:
- Listes chaînées
- Listes déroulantes excel - Guide
- Listes déroulantes en cascade excel - Guide
- Listes whatsapp - Guide
- WhatsApp : vous pouvez maintenant créer et gérer des listes de discussions - Accueil - Messagerie instantanée
- Manipulation des listes ✓ - Forum Python
5 réponses
Bonjour,
Pour ta première question bon alors ici ce que je ne comprends pas c'est pourquoi avoir mit un pointeur sur llist
C'est pour avoir un pointeur de tête de liste. C'est important parce que si tu insères un élément en tête de liste (typiquement dans le cas d'une pile) tu dois pouvoir modifier ta tête de liste Ou si tu retires le premier élément de ta liste, tu dois modifier ton pointeur de tête de liste pour le faire pointer sur le second élément.
Pour ta deuxième question: et aussi pourquoi initialisé ma_liste1 a NULL, ma_liste1 n'est pas un pointeur, c'est une variable
En fait, un pointeur est une variable qui contient une adresse mémoire.
Cordialement,
Revan
Pour ta première question bon alors ici ce que je ne comprends pas c'est pourquoi avoir mit un pointeur sur llist
C'est pour avoir un pointeur de tête de liste. C'est important parce que si tu insères un élément en tête de liste (typiquement dans le cas d'une pile) tu dois pouvoir modifier ta tête de liste Ou si tu retires le premier élément de ta liste, tu dois modifier ton pointeur de tête de liste pour le faire pointer sur le second élément.
Pour ta deuxième question: et aussi pourquoi initialisé ma_liste1 a NULL, ma_liste1 n'est pas un pointeur, c'est une variable
En fait, un pointeur est une variable qui contient une adresse mémoire.
Cordialement,
Revan
oui je sais que un pointeur est une variable qui contient une adresse sauf que cette variable il faut l'indiquer par l'opérateur * pour stocker des adresse mémoire sinon sa reste un variable normale qui stocke des valeurs ?
Et pour le pointeur de tête llist, ici ce n'est pas un pointeur de tête, c'est le type puisque il y a typedef ??
moi perso ce que j'aurais fais pour avoir un pointeur de tête se serait
Et pour le pointeur de tête llist, ici ce n'est pas un pointeur de tête, c'est le type puisque il y a typedef ??
moi perso ce que j'aurais fais pour avoir un pointeur de tête se serait
struct element *head
eu oui je l'ai déjà lu ce lien mais ce que je comprends pas c'est ce code que j'ai pris ici:
http://www.siteduzero.com/tutoriel-3-36245-les-listes-chainees.html#
http://www.siteduzero.com/tutoriel-3-36245-les-listes-chainees.html#
Re,
Figure toi que je ne vais pas commencer lire le tuto du siteduzero ;-))
moi perso ce que j'aurais fais pour avoir un pointeur de tête se serait
struct element *head
Bien sûr que tu peux.
Dans mon exemple, j'ai crée une structure
qui contient le début, la fin et la taille (le nbr d'éléments) de la liste.
Quelque soit les opérations sur la liste (ajout, suppression, destruction), les variables seront mise à jour pour avoir toujours le début, la fin et le nombre d'éléments de la liste.
Pourquoi?
En cas des besoin, il n'y aura pas nécessaire de se déplacer dans la liste pour savoir le nombre d'éléments, ou atteindre le début ou la fin de la liste.
Le plus important c'est de comprendre le principe, ensuite tu peux créer tes listes en fonction de tes besoins.
Figure toi que je ne vais pas commencer lire le tuto du siteduzero ;-))
moi perso ce que j'aurais fais pour avoir un pointeur de tête se serait
struct element *head
Bien sûr que tu peux.
Dans mon exemple, j'ai crée une structure
typedef struct ListeRepere {
Element *debut;
Element *fin;
int taille;
}Liste;
qui contient le début, la fin et la taille (le nbr d'éléments) de la liste.
Quelque soit les opérations sur la liste (ajout, suppression, destruction), les variables seront mise à jour pour avoir toujours le début, la fin et le nombre d'éléments de la liste.
Pourquoi?
En cas des besoin, il n'y aura pas nécessaire de se déplacer dans la liste pour savoir le nombre d'éléments, ou atteindre le début ou la fin de la liste.
Le plus important c'est de comprendre le principe, ensuite tu peux créer tes listes en fonction de tes besoins.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question