bonjour, je rencontre quelques problèmes de compréhension concernant les listes chainées, en effet, il y a des warnings dans mon code que je ne comprends pas la significations notamment warning: "assignment from incompatible pointer type". j'ai localisé les warnings cependant je ne comprends pas leur présence.

voici le code:
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
typedef struct _info
{
    char* nom_fichier;
    char* source;
    char* dest;
    int taille_fichier;
    int nombre_octets_envoyes;
}info;
 
typedef struct element
{
    info donnees;  
    int taille;
    struct element* next;
}element;
 
typedef element* liste_info;
 
 
// copier la deuxieme variable dans la premiere
void copier_info(info *donnees1, info *donnees2)
{
	donnees1->nom_fichier = strdup(donnees2->nom_fichier);
	donnees1->source = strdup(donnees2->source);
	donnees1->dest = strdup(donnees2->dest);
	donnees1->taille_fichier = donnees2->taille_fichier;
	donnees1->nombre_octets_envoyes = donnees2->nombre_octets_envoyes;
}
 
// teste si deux infos sont egale
int est_egale_info(info donnees1, info donnees2)
{
	if ((!strcmp(donnees1.nom_fichier,donnees2.nom_fichier))) 
	{
		return 1;
	} 
	else 
	{
		return 0;
	}
}
 
// ajouter une donnees en fin de liste
liste_info ajouter_en_fin(liste_info liste,info *donnees)
{
    /* On crée un nouvel élément */
    element* nouvelElement = malloc(sizeof(element));
 
 
    /* On assigne la donnee au nouvel élément */
    copier_info(&(nouvelElement->donnees),donnees);
 
    /* On ajoute en fin, donc aucun élément ne va suivre */
    nouvelElement->next = NULL;
 
    if(liste == NULL)
    {
        /* Si la liste est videé il suffit de renvoyer l'élément créé */
        return nouvelElement;
    }
    else
    {
        /* Sinon, on parcourt la liste à l'aide d'un pointeur temporaire et on
        indique que le dernier élément de la liste est relié au nouvel élément */
	element* temp=liste;
        while(temp->next != NULL)
        {
            temp = temp->next; // warning ici
            temp->taille++;
        }
        temp->next = nouvelElement; // warning ici
        return liste;
    }
}
Merci de votre compréhension.