#include #define Taille 100 typedef struct { int noeuds[Taille]; int len; }Tas; Tas* Ajout_elt( Tas* t,int noeud){ (*t).len+=1; int l=(*t).len; (*t).noeuds[l-1]=noeud; int ex=(*t).noeuds[l-1]; int i=l-1; while ((i!=0) &&((*t).noeuds[(i-1)/2]<(*t).noeuds[i])) { int temp=(*t).noeuds[(i-1)/2]; printf("echange %d avec %d\n",(*t).noeuds[(i)],(*t).noeuds[(i-1)/2]); (*t).noeuds[(i-1)/2]=(*t).noeuds[i]; (*t).noeuds[i]=temp; i=(i-1)/2; } return t; } void Supprimeracine(Tas* t){ int temp=(*t).noeuds[0];//creer un tampon pour echanger le dernier et le premier (*t).noeuds[0]=(*t).noeuds[(*t).len -1]; (*t).noeuds[(*t).len -1]=temp; (*t).len-=1;//modifie la len a -1 pour enterrer la racine int i=0; while ((i!=(*t).len-1)&&((*t).noeuds[(i+1)*2]>(*t).noeuds[i])&&((*t).noeuds[(i)*2+2]>(*t).noeuds[i])) { printf("i=%d \n",i); if(((*t).noeuds[(i)*2+2])>((*t).noeuds[(i)*2+1])){//on regarde lequelle de ses fils est le plus grands. printf("%d plus grand que %d",(*t).noeuds[(i)*2+2],(*t).noeuds[(i)*2+1]); temp=(*t).noeuds[(i)*2+2]; (*t).noeuds[(i)*2+2]=(*t).noeuds[(i)]; (*t).noeuds[(i)]=temp; i=(i)*2+2; } else{ temp=(*t).noeuds[(i)*2+1]; (*t).noeuds[(i)*2+1]=(*t).noeuds[(i)]; (*t).noeuds[(i)]=temp; i=(i)*2+1; } } } void tri(Tas* t){ Tas arbre={{},10}; Tas *p=&arbre; printf("%d taille arbre",arbre.len); for(int i=0;i<10;i++){ Ajout_elt(p,(*t).noeuds[i]); } for(int j=0;j<20;j++){ printf("nombre :%d\n",(*p).noeuds[j]);} t=p; } void print(int t, int *p){ for(int i=0;i