Bonsoir,
voila j'ai un tp a rendre qui consiste a créer un arbre binaire où chacun de ses noeuds a comme info une chaine de caractére et un champ qui pointe vers une liste chainée j'ai ecris ma fonction d'insertion en fin de liste avec le cas de l'insertion en téte le programme se compile mais lors de l'execution le programme cesse de fonctionner bref voici mon bout de programme
Merci d'avance pour votre aide.
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
 
liste* ajout(liste *tete)
{    st t;
    char x[10]; liste *p,*q;
 
           q=(liste*)malloc(sizeof(liste));
           puts("Donnez le nom du fichier");
           scanf("%s",x);
           strcpy(q->info.nomf,x);
           puts("Donnez la date du fichier");
           do{
           scanf("%d%d%d",&q->info.jj,&q->info.mm,&q->info.annee);}
           while((q->info.jj<0)&&(q->info.jj>32)&&(q->info.mm<0)&&(q->info.mm>13)&&(q->info.annee<0)&&(q->info.annee>1950));
           puts("Donnez la taille du fichier");
           scanf("%d",q->info.taille);
           q->svt=NULL;
           if (tete==NULL)   return(q);
             else {
         for(p=tete;p->svt!=NULL;p=p->svt);//avancer jusqu'a la fin
         p->svt=q; return(tete);}
}
 
//inserer un fichier
void insertf(repertoire *r,char x[10])
{
    repertoire *pere,*adr;
    liste *tete;
    adr=NULL;
    adr=pere=NULL;
  if(r==NULL)
     puts("\nREPERTOIRE PRINCIPAL VIDE\n");
  else
  {  if (!strcmp(r->nomr,x)) adr=r;
   else
    {pere=r;
    if (strcmp(r->nomr,x)<0)
    insertf(r->sucg,x);
    else
    if (strcmp(r->nomr,x)>0)
    insertf(r->sucd,x);}
 
    if (adr!=NULL)
    {
        adr->fichier=ajout(adr->fichier);
        puts("\nsucces de l'ajout du fichier\n");
    }
    else { // cas où le repertoire n'existe pas
            repertoire *noeud;
            noeud=nouveaurep(x);
           tete=(liste*)malloc(sizeof(liste));
           noeud->fichier=tete;
           ajout(&tete);
           if (strcmp(noeud->nomr,pere->nomr)<0)
            pere->sucd=noeud;
           else
            pere->sucg=noeud;
    } }
}