A voir également:
- Langage C
- Langage ascii - Guide
- Langage binaire - Guide
- Langage visual basic - Télécharger - Langages
- Pascal langage - Télécharger - Édition & Programmation
- Langage basic gratuit - Télécharger - Édition & Programmation
2 réponses
Char Snipeur
Messages postés
10112
Statut
Contributeur
1 299
on veux bien t'aider, mais soit plus précis : donne ton arbre au moins, et ce que tu veux faire exactement.
la procédure insérer me permet d'avoir un arbre binaire de recherche et maintenant j'ai besoin d'une autre procédure qui me permettra de supprimer une valeur dans l'arbre cette valeur étant donné par l'utilisateur
Voici le code
#include <stdio.h>
#include <stdlib.h>
struct noeud{
int valeur;
struct noeud* fg;
struct noeud* fd;
};
typedef struct noeud* arbre;
void Inserer(arbre *A,int v)
{
if(*A==NULL)
{
*A=(arbre)malloc(sizeof (struct noeud));
(*A)->valeur=v;
(*A)->fg=NULL;
(*A)->fd=NULL;
}
else if(v<=(*A)->valeur)
Inserer(&(*A)->fg,v);
else
Inserer(&(*A)->fd,v);
}
void parcoursPrefixe(arbre A)//affiche les valeurs de l'arbre
{
if(A!=NULL)
{
printf("%d ",(*A).valeur);
parcoursPrefixe((*A).fg);
parcoursPrefixe((*A).fd);
}
}
int main()
{
int n,i,m,v,k,p;
arbre A=NULL;
printf("saisir le nombre d'element de l'arbre\n");
scanf("%d",&n);
fflush(stdin);
for(i=1;i<=n;i++)
{
printf("donner le %d element ",i);
scanf("%d",&m);
Inserer(&A,m);
}
parcoursPrefixe(A);
printf("entrer le nombre a supprimer");
scanf("%d",&p);
supprimer(&A,p);//g besoin de cette procédure pour pouvoir supprimer
parcoursPrefixe(A);
getch ();
return 0;
}
aprés avoir supprimer j'affiche l'arbre pour voir si le nombre a été bien supprimer
j'espère avoir été claire
Voici le code
#include <stdio.h>
#include <stdlib.h>
struct noeud{
int valeur;
struct noeud* fg;
struct noeud* fd;
};
typedef struct noeud* arbre;
void Inserer(arbre *A,int v)
{
if(*A==NULL)
{
*A=(arbre)malloc(sizeof (struct noeud));
(*A)->valeur=v;
(*A)->fg=NULL;
(*A)->fd=NULL;
}
else if(v<=(*A)->valeur)
Inserer(&(*A)->fg,v);
else
Inserer(&(*A)->fd,v);
}
void parcoursPrefixe(arbre A)//affiche les valeurs de l'arbre
{
if(A!=NULL)
{
printf("%d ",(*A).valeur);
parcoursPrefixe((*A).fg);
parcoursPrefixe((*A).fd);
}
}
int main()
{
int n,i,m,v,k,p;
arbre A=NULL;
printf("saisir le nombre d'element de l'arbre\n");
scanf("%d",&n);
fflush(stdin);
for(i=1;i<=n;i++)
{
printf("donner le %d element ",i);
scanf("%d",&m);
Inserer(&A,m);
}
parcoursPrefixe(A);
printf("entrer le nombre a supprimer");
scanf("%d",&p);
supprimer(&A,p);//g besoin de cette procédure pour pouvoir supprimer
parcoursPrefixe(A);
getch ();
return 0;
}
aprés avoir supprimer j'affiche l'arbre pour voir si le nombre a été bien supprimer
j'espère avoir été claire
pour supprimer, il faut recoller les noeud à gauche et à droite, et libérer la mémoire. La première étape est bien entendu de parcourir l'arbre jusqu'à la valeur que tu cherches.
comme tu n'as pas de point d'entré fixe, avant il faut "rembobiner" ta structure, c'est à dire aller tout à gauche, puis parcourir vers la droite et s'arreter lorsque tu as la valeur souhaitée.
Voilà l'algorithme, à toi d'écrire les fonctions. Redemande si tu buttes.
comme tu n'as pas de point d'entré fixe, avant il faut "rembobiner" ta structure, c'est à dire aller tout à gauche, puis parcourir vers la droite et s'arreter lorsque tu as la valeur souhaitée.
Voilà l'algorithme, à toi d'écrire les fonctions. Redemande si tu buttes.