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, 06h05
#2
Tryss2
Date d'inscription
août 2015
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, 14h00
#3
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 767
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, 21h28
#4
Tryss2
Date d'inscription
août 2015
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, 22h16
#5
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 767
Re : Liste chaînée en c
Et comment sait-on qu'elle est vide dans ce cas?
15/08/2018, 14h11
#6
Leond95
Date d'inscription
février 2018
Âge
28
Messages
166
Re : Liste chaînée en c
void* element ça sert a quoi?
15/08/2018, 14h34
#7
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 767
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, 16h29
#8
Tryss2
Date d'inscription
août 2015
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, 18h12
#9
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 767
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