Académique Documents
Professionnel Documents
Culture Documents
Fonction Arbre
Fonction Arbre
}produit;
produit pro;
struct maillonD *left;
struct maillonD *right;
}maillonD;
maillonD *root;
}stock;
//creer stock
stock *creer_stock(){
stock *pm=malloc(sizeof(stock));
if(pm==NULL)
return NULL;
pm->root=NULL;
return pm;
}
//creer maillon
maillonD* creer_maillon(produit prod){
maillonD *m=malloc(sizeof(maillonD));
if(m==NULL)
return NULL;
m->pro=prod;
m->left=NULL;
m->right=NULL;
return m;
//fonction acheter :
stock *acheter(stock *arb,produit pro,int Qnt,double prixU){
maillonD *m=creer_maillon(pro);
if(arb->root==NULL){
m->pro.Qnt=Qnt;
m->pro.PrixU=prixU;
arb->root=m;
return arb;
}
maillonD *temp=arb->root;
while(temp!=NULL){
maillonD *parent=temp;
if(strncmp(m->pro.label,temp->pro.label,1)<=0){
temp=temp->left;
}
else{
temp=temp->right;
}
if(parent->pro.label==m->pro.label){
parent->pro.Qnt=(parent->pro.Qnt)+(m->pro.Qnt);
parent->pro.PrixU=m->pro.PrixU;
free(m);
else if(strncmp(m->pro.label,parent->pro.label,1)<=0)
parent->left=m;
else
parent->right=m;
return arb;
//fonction vendre :
if(arb->root==NULL)
return NULL;
maillonD *temp=arb->root;
if(Existe(arb,pro)==NULL){
printf("le produit n'existe pas dans le stock !");
}
else{
while(temp!=NULL){
maillonD *parent=temp;
if(strncmp(pro.label,temp->pro.label,1)<=0)
temp=temp->left;
else
temp=temp->right;
parent->pro.Qnt=(parent->pro.Qnt)-Nb_unites;
if(parent->pro.Qnt==0)
arb=nettoyer(arb,pro);
return arb;
}
k=k+arb->root->pro.PrixU;
preorderTraversal(arb->root->left,k);
preorderTraversal(arb->root->right,k);
}
//prix stock :
double PrixStock(stock *arb){
if(arb->root==NULL)
return 0;
double k=0;
preorderTraversal(arb,k);
return k;