Bonjour,

Lors d'un cours de C, mon prof m'a dit quelque chose qui m'a énormément surpris, de par son expérience je le crois mais en tiquant un peu.

Suite à plusieurs lignes de codes qu'il nous a donné sur les listes doublement chainées, il y a un petit bug je me demande si cela ne vient de ce qui m'a choqué. Je vous explique, voici les structures sur lesquelles ont travaille :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
typedef struct cellule
{
    int val;
    struct cellule *prec;
    struct cellule *suiv;
} cellule;
 
typedef cellule* liste;
Apres dans une fonction qui parcourt la liste pour l'afficher voilà ce qui fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
void print_liste (liste l)
{
  liste tmp;
 
  tmp = (liste) malloc( sizeof(cellule) );
  tmp = l;  
  while(tmp != NULL)
  {
    printf("%d ",tmp->val);
    tmp = tmp->suiv;
  }
}
Personnelement j'aurais plus fait un truc comme ca (i.e sans allouer de la memoire a l'aide de malloc() ):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
void print_liste (liste l)
{
  liste tmp;
 
  tmp = l;  
  while(tmp != NULL)
  {
    printf("%d ",tmp->val);
    tmp = tmp->suiv;
  }
}
Mis à part le fait que mon prof cast le malloc() pourriez-vous me donner votre avis s'il vous plaît!

Merci d'avance