Vous êtes sur la page 1sur 3

typedef struct produit{

char label [50];


int Qnt;
double PrixU;

}produit;

typedef struct maillonD{

produit pro;
struct maillonD *left;
struct maillonD *right;

}maillonD;

typedef struct ListStockD{

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 :

stock* vendre(stock *arb,produit pro,int Nb_unites){

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

void preorderTraversal(stock *arb,double k) {


if (arb->root== NULL) return;

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;

Vous aimerez peut-être aussi