Probleme--inserer et supprimer
probleme des arbres binaires
je pense que mon programme est mal fonctionné
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| #include <stdio.h>
#include <conio.h>
#include <malloc.h>
typedef int type_val;
typedef struct noeud
{
type_val T;
struct noeud *fg;
struct noeud *fd;
}racine;
typedef racine *arbre;
/*********************fonction ecrire**********************/
void ecrire(type_val x)
{
printf("%d\n",x);
}
/********************fonction lire***************************/
void lire(type_val *x)
{
scanf("%d",&x);
}
/*******************Fonction remplir****************/
arbre remplir(type_val V,arbre l)
{
if(l==NULL)
{
l=(arbre)malloc(sizeof(racine));
l->T=V;
l->fg =NULL;
l->fd =NULL;
}
else if(l->T<V)
l->fd=remplir(V,l->fd);
else l->fg=remplir(V,l->fg);
return (l) ;
}
void afficher(arbre A,int niveau)
{ int i;
if(A!=NULL)
{ for(i=0;i<niveau;i++)
printf("---");
ecrire(A->T);
afficher(A->fg,niveau+1);
afficher(A->fd,niveau+1);
}
}
type_val suprimin(arbre *a)
{ arbre aux;
type_val element;
if (a!=NULL)
{
arbre aux;
if ((*a)->fg==NULL)
{ element=(*a)->T;
aux=(*a);
(*a)=(*a)->fd;
free((*a)); }
else
element=suprimin(&(*a)->fg);
}
return (element);}
/*********************menue*************************************/
char menue()
{
char ch;
//clrscr();
printf("*****************Menu********************\n\n");
printf("-Afficher........................ a\n");
printf("-Supprimer....................... s\n");
printf("-Inserer......................... i\n");
printf("-Quitter......................... q\n\n");
printf(" votre choix :");
fflush(stdin);
ch=getchar();
return(ch);
}
/****************Fonction principale**************************/
int main()
{char c;
arbre l=NULL;
type_val x ;
while ((c==menue())!='q')
{
switch(c)
{
case'i': printf("la valeur a inserer") ;
lire(&x);
l=remplir(x,l);break ;
case's': printf("la valeur %d a ete suprimer\n",suprimin(&l));break;
case'a': afficher(l,0);break;
default :printf("verifier le caractaire que vous avez tapez"); break;
}
}
/*printf("entrer la valeur a inserer: ");
err=scanf("%d",&V);
if(err<=0) break;
l=remplir(V,l);
}
while(1);
afficher(l,0);*/
fflush(stdin);
getchar();
return(0) ;
} |
vous pouvez m'aider svp ..??