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 116 117 118 119 120 121 122 123 124 125 126 127 128
|
/*Structure de données: Arbre binaire de recherche*/
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
/* Définition de la structure Noeud d'un arbre*/
typedef struct _Noeud{
int rang;
char prenom[30];
struct _Noeud* succ_gauche;
struct _Noeud* succ_droit;
} Noeud;
/*Définition du type TArbre, une structure de type TArbre est définie par un pointeur sur la racine de l'arbre*/
typedef Noeud* TArbre;
/* Fonction ajouterNoeud: crée un Noeud et l'ajoute dans un arbre binaire de recherche.*/
void ajouterNoeud(TArbre* arbre,char *pren,int r)
{
Noeud* nouveauNoeud;
TArbre pArbre; /* Variable utilisée pour parcourir l'arbre*/
// -------------->> Création du nouveau noeud <<----------------
nouveauNoeud=(Noeud *)malloc(sizeof(Noeud));
nouveauNoeud->rang=r;
strcpy(nouveauNoeud->prenom,pren);
nouveauNoeud->succ_gauche=NULL;
nouveauNoeud->succ_droit=NULL;
// ---------->> Ajout du nouveau noeud dans l'arbre <<-----------
pArbre=*arbre;
// ->> si c'est un nouvel arbre alors le nouveau noeud sera la racine de cet arbre
if(pArbre==NULL)
pArbre=nouveauNoeud;
else
{
while(TRUE)
{
if(r < pArbre->rang)
{
if(pArbre->succ_gauche == NULL)
{
pArbre->succ_gauche = nouveauNoeud;
break;
}
else
pArbre = pArbre->succ_gauche;
}
else
{
if(pArbre->succ_droit == NULL)
{
pArbre->succ_droit = nouveauNoeud;
break;
}
else
pArbre = pArbre->succ_droit;
}
}
}
}
void sauvgarder(FILE *f,TArbre arbre)
{
if(arbre){
fprintf(f,"prenom : %s rang : %d\n",arbre->prenom,arbre->rang);
sauvgarder(f,arbre->succ_droit);
sauvgarder(f,arbre->succ_gauche);
}
}
void ecrireFichier(TArbre arbre)
{
FILE *f=fopen("solution.txt","w");
if(!f)
printf("Erreur douverture\n");
else{
sauvgarder(f,arbre);
}
fclose(f);
}
int main()
{
TArbre *arbre;
char prenom_grandParent[30];
char prenom_Parent1[30];
char prenom_Parent2[30];
/*char prenom_grandParent[30];
char prenom_Parent1[30];
char prenom_Parent2[30];*/
printf("\n\n\t\t\t############################################\n");
printf("\t\t\t# REALISER PAR ETUDIANTE #\n");
printf("\t\t\t# SISINIYA #\n");
printf("\t\t\t############################################\n");
printf("\n\n-->>Les numero des rangs de chaque noeud de l'arbre binaire ont ete propose comme suite : \n\n");
printf("\t\n |4| \n");
printf("\t |3| |6|\n");
printf("\t |1| |2| |5| |7|\n\n");
printf("\n -->> entrer le prenom du grande pere : ");
scanf("%s",prenom_grandParent);
fflush(stdin);
ajouterNoeud(arbre,prenom_grandParent,4);
printf("\n -->> entrer le prenom des fils du grand parent : \n ");
printf("\t\t * Prenom Parent 1 : ");
scanf("%s",prenom_Parent1);
fflush(stdin);
ajouterNoeud(arbre,prenom_Parent1,3);
printf("\n\t\t * Prenom Parent 2 : ");
scanf("%s",prenom_Parent2);
fflush(stdin);
ajouterNoeud(arbre,prenom_Parent2,6);
ecrireFichier(*arbre);
printf("\n\n \t\tFIN DE MON APPLICATION \t\t Sisiniya 2009/2010\n\n");
return 0;
} |
Partager