Liste chainée en C !

cyberlulu -  
 dark -
Salut !
j'ai un pb au niveau des listes chainées. j'ai déclaré la structure et l'élément liste comme ca :
typedef struct elem {char valeur;
                                          struct elem * suivant;
                                       } element;

typedef element * liste;


jusque là, il n'y a pas de pb, tt fonctionne.
après, je veux un tableau de liste donc j'ai écrit :

liste tableau[10];
tableau[0]->valeur="a";
tableau[0]->suivant=NULL;


et ainsi de suite jusqu'à 10. le problème qui se pose c'est au niveau de : tableau[0]->valeur="a";
tableau[0]->suivant=NULL;
je ne sais pas ce qui ne fonctionne pas... si qqun sait le problème qu'il y a, merci de me l'expliquer.
@+

4 réponses

  1. maily Messages postés 7560 Statut Contributeur 453
     
    Bonjour!!

    Tu essayes de mettre une chaine de caractères dans un caractères!
    Il faut que tu utilises les ' pas les ".

    Sinon, je pense que ça ne marchera pas parceque tu n'alloue pas la place qu'il faut!
    Pour chaque case de ton tableau, il faut que tu fasses un malloc!! ;-)
    Je ne me souviens plus de la syntaxe exacte, mais c'est un truc comme ça:
    for (int i=0; i<10; i++){
             tableau[i]= malloc (sizeof( element));
    }


    Maily :-))))
    ragondin, va au coin!
    2
    1. cyberlulu
       
      ok merci bcp
      effectivement, c'est le malloc qu'il fallait faire. j'avais pas alloué de place... faut dire j'ai un peu du mal avec ca. je croyais qu'en déclarant liste tableau[10], c'était bon...
      0
    2. maily Messages postés 7560 Statut Contributeur 453
       
      et non!! Malheureusement!
      En java oui... Le problème du C, c'est que tu dois tout allouer et tout désallouer si tu veux que tes programmes soient optimaux!


      Maily :-))))
      ragondin, va au coin!
      0
    3. reza
       
      non mec ça c'est pas ton probleme un tableau statique n'as pas besoin d'allouer la mémoire c'est fait automatique par le compilateur.quand tu déclare un tableau dynamique(char *t;),la il faut que tu alloue la mémoire(par exemple:*t=(char*)malloc(20*sizeof(char))on a alloué la mémoire pour 20 caractère.mais la ton problème vient du faite que tu as utilisé " au lieu de ça '.
      0
    4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > reza
       
      Salut,

      si depuis 2004 il n'a toujours pas compris alors c'est grava :-DD
      0
    5. yassine
       
      t'a raison mon reza mais je crois que le problème est dans les "! on doit utiliser les '
      0
  2. sweety
     
    Bonjour, moi j'arrive pas a comprendre les poiteurs je trouve pas pas un cours bien detailé,meme pb avec les listes,les files,les piles et les arbres
    0
  3. saada Messages postés 3 Statut Membre
     
    bonne journe a tous les amis ,je cherche un cours des listes chainées et les piles et les files en langage C.
    et merci ...
    -1
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      Regarde ici Tutoriels sur le langage C

      lami20j
      0
    2. dark
       
      ta mis deux nom a une seule structure elem et element!!
      0