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
| #include <malloc.h>
#include<conio.h>
#include <stdio.h>
using namespace std;
typedef struct noeud
{
int valeur ;
noeud *fg,*fd;
} *arbre;
arbre na(int val,arbre fg,arbre fd)
{
arbre c;
c = (arbre) malloc(sizeof(noeud));
c->valeur = val;
c->fg = fg;
c->fd = fd;
return c;
}
class file {
int tete;
int queue;
arbre F[100] ;
public :
file()
{
tete=0;
queue=0;
};
bool FILEVIDE()
{
if (F[tete] == NULL)
{
return true ;
}
else
{
return false ;
}
}
void INSERTION(arbre x)
{
if ((!FILEVIDE())&& (queue==tete) )
{
printf("%d","Erreur : débordement positif") ;
}else
{
F[queue]=x;
queue=(queue+1)% 100;
}
}
arbre SUPPRESSION()
{
if (FILEVIDE())
{
printf("%d","Erreur : débordement négatif") ;
}
else
{
arbre temp;
temp=F[tete];
tete=(tete+1)% 100;
return temp ;
}
}
};
void parcours(arbre r)
{
arbre u;
file f;
if (r!= NULL)
{
f.INSERTION(r);
while(!f.FILEVIDE())
{
u = f.SUPPRESSION() ;
printf("%d ",u->valeur);
f.INSERTION(u->fg);
f.INSERTION(u->fd) ;
}
}
}
int main ()
{
arbre racine = na(10,na(4,na(2,NULL,NULL),na(6,NULL,NULL)),na(14,NULL,NULL));
parcours(racine);
getch();
return 0;
} |
Partager