Bonjour en lisant un cours sur le C , plus particulièrement le chapitre sur les listes chaînes

je ne comprends pas un point :

Tout d'abord on créer une structure qu'on reutiliserat à chaque fois qu'on veut créer un élément de la liste voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
typedef struct Element Element;
struct Element
{
int nombre;
Element *suivant;
};
Ensuite on créer une structure Liste qui nous servira une seul fois pour savoir ou se trouve le premier élément de la liste.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 typedef struct Liste Liste;
struct Liste
{
Element *premier;
};
Enfin on créer une fonction qui aura pour but de créer la structure de contrôle et le premier élément de la liste

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Liste *initialisation()
{
Liste *liste = malloc(sizeof(*liste));
 
Element *element = malloc(sizeof(*element));
 
if (liste == NULL || element == NULL)
{
exit(EXIT_FAILURE);
}
element->nombre = 0;
element->suivant = NULL;
liste->premier = element;
 
return liste;
}
Dans la ligne 3 du dernier code

on créer un pointeur de type Liste qu'on appelle liste et on alloue à ce pointeur un nombre d’octets et c'est le paramètre de sizeof que je ne comprends pas "*liste" c'est un pointeur , mais qui pointe vers quoi , puisque je suis justement entrain de le définir ...c'est un peux flou à ce niveau là

Merci