S'ils vous plait est ce que quelqu'un peut m'expliquer comment déclarer en c :
Une liste chaînée
Un(e) PILE
Un(e) FILE
Cordialement
Ps : si vous avez des exemples ça sera mieux
-----
14/08/2018, 07h05
#2
invite23cdddab
Date d'inscription
janvier 1970
Messages
2 151
Re : Liste chaînée en c
On peut faire un truc du genre :
Code:
// liste doublement chainée
struct Chaine {
void* element; // type à remplacer par celui souhaité
struct Chaine * suivant;
struct Chaine * precedent;
};
// Une pile est une liste chainée dans laquelle on ajoute et enlève les éléments au début, donc on a une variable qui pointe sur le début de la liste chainée.
struct Pile {
struct Chaine * top;
};
// Une file est une liste chainée dans laquelle on ajoute les éléments au début, et on les retire à la fin. On a donc une variable qui pointe sur le début de la liste chainée, et une sur la fin .
struct File {
struct Chaine * debut;
struct Chaine * fin;
};
Après, il faut écrire les fonctions pour manipuler ces structures
14/08/2018, 15h00
#3
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 787
Re : Liste chaînée en c
Pour la pile, j'ajouterais un pointeur sur sa tête, de manière à ne pas avoir à parcourir toute la pile à chaque fois pour accéder à son sommet.
14/08/2018, 22h28
#4
invite23cdddab
Date d'inscription
janvier 1970
Messages
2 151
Re : Liste chaînée en c
Dans mon idée, top est déjà le pointeur sur la tête : ça ne sert à rien de garder un pointeur sur le fond de la pile
Aujourd'hui
A voir en vidéo sur Futura
14/08/2018, 23h16
#5
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 787
Re : Liste chaînée en c
Et comment sait-on qu'elle est vide dans ce cas?
15/08/2018, 15h11
#6
invite75c2964e
Date d'inscription
janvier 1970
Messages
166
Re : Liste chaînée en c
void* element ça sert a quoi?
15/08/2018, 15h34
#7
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 787
Re : Liste chaînée en c
Je suppose que ça doit pointer sur la donnée à stocker, mais pourquoi utiliser un pointeur? Je trouve qu'il serait plus simple d'y stocker directement la donnée, en tout cas c'est suffisant la plupart du temps, sauf si on veut stocker des chaines par exemple.
Mais si on y stocke directement la valeur comme ça se pratique généralement, il faudra ajouter un moyen de déterminer si la pile est vide ou pas car ce n'est pas la donnée qui pourra donner cette information.
15/08/2018, 17h29
#8
invite23cdddab
Date d'inscription
janvier 1970
Messages
2 151
Re : Liste chaînée en c
Des chaines, des structures, n'importe quoi d'alloué de façon dynamique... Je ne sais absolument pas ce que Leond85 veut mettre dedans, donc je mets un pointeur générique.
Et sinon, la pile est vide quand top == NULL, tout simplement.
15/08/2018, 19h12
#9
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 787
Re : Liste chaînée en c
Envoyé par Tryss2
Et sinon, la pile est vide quand top == NULL, tout simplement.
C'est une façon de gérer la pile en effet. Il faudra bien vérifier l'état de précédent et suivant pour mettre à jour top. Je ne suis pas sur qu'encapsuler une structure dans une autre structure soit la façon la plus simple d'aborder la déclaration de la pile vu que Leond95 a l'air de débuter