Je n´utilise pas dev-cpp, donc on va faire dans la généralité.
1. Il faut tout d´abord compiler ton appli en debug. Je suppose que dev-cpp permet de le choisir via une case à cocher, ou alors tu rajoute -g comme option de compilation.
Ensuite tu dois avoir un menu debug pour lancer ton appli, jouer avec les points d´arrêts...
2. Il le fait tout seul. En princie à gauche de ton environnement de travail tu dois avoir un cadre avec la liste des fichiers du projet. Il suffit donc d´y rajouter tes autres fichiers source.
3. Les listes chaînées peuvent avoir de multiples utilisations !
Elles permettent de stocker des ensembles de données dynamiques.
Tu peux aussi bien en faire des listes ( comme une liste d´objets que contiendra ton personnage, une liste des taches à effectuer...), que des piles, ou encore les retrouver dans des tables de hachage...
Si on prend un tableau, on ne peut, par exemple, pas toujours déterminer à la compilation la taille ou le nombre des données à manipuler. Les listes chaînées permettent d´apporter une réponse à ce problème. Les listes chaînées ne sont rien d´autre qu´un ensemble de cellules chaînées entre elles. Pour rajouter une donnée, il suffit donc de la rajouter dans ce chaînage, et si l´on souhaite en supprimer, il suffit d´enlever un des maillons. On remarque une contrainte imposée par la structure même des listes chaînées : pour accéder à une certaine cellule, on doit parcourir toutes les cellules précédentes, contrairement aux tableaux où l´on avait un accès direct.
En pratique une cellule est donc une structure composée d´un champ pour la donnée à stocker et d´un lien vers la prochaine cellule. Pour lier les cellules entre elles on utilise généralement un pointeur.
On aura donc par exemple dans le cas où tu souhaite stocker des pointeurs d´entiers :
typedef struct TCellule
{
/ * Pointeur sur la donnée du noeud */
int *donnee;
/ * Pointeur sur le prochain élément */
struct TCellule *prochain;
} Cellule, *pCellule;
Pour ajouter/supprimer un élément, il suffit donc de jouer sur le pointeur *prochain ( ce qui est beaucou plus pratique et rapide que pour un tableau).
Mais là, dans l´exemple ce n´était qu´une liste chaînée simple car il n´y a qu´un seul pointeur.
Tu peux aussi retoruver des variantes avec des listes :
doublement chainées -> un pointeur vers le prochain élément, et un autre pointeur vers le précédent élément
circulaires -> le dernier élément reboucle sur le premier
. ..