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:
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; } } }