Académique Documents
Professionnel Documents
Culture Documents
Représentation Chaînée: Programmation C 1
Représentation Chaînée: Programmation C 1
1- Représentation chaînée
struct cellule
{
int num, pr;
struct cellule *suiv;
};
typedef struct cellule cellule;
struct file
{
cellule *t,*q;
};
typedef struct file file;
2-
{
cellule *aux;
aux=(cellule *) malloc (sizeof(cellule));
if(aux)
{
aux->num =n;
aux->pr=p;
aux->suiv=NULL;
if( f->t==NULL)
{
f->t=aux;
f->q=aux;
}
else
{
f->q->suiv=aux;
f->q=aux;
}
}
}
3-
4-
if(p==pr)
{ traiter_dossier(n);
printf("dossier de numero %d traité -\n", n);
i++;
}
else
{
enfiler(f,n,p);
}
}
pr--;
}
}
5-
5.1 Représentation chaînée d’une pile
typedef cellule * pile;
5.2
void empiler(pile *p,int e, int pri)
{
cellule *aux;
aux=(cellule *) malloc (sizeof(cellule));
if(aux)
{
aux->num=e;
aux->pr=pri;
aux->suiv=*p;
*p=aux;
}
}
5.3-
void traiterDossiers(file *f)
{
int n, p;
pile pl;
pileVide(&pl);
traiter(f);
while(f->t)
{
defiler(f,&n,&p);
empiler(&pl,n,p);
}
while (pl)
{
depiler(&pl,&n,&p);
traiter-dossier(n);
}
}
Exercice 1
5-
Le principe de l’algorithme est le suivant :
Il faut tout d’abord trouver le nœud p dont l’adresse est passée en paramètre ;
Une fois le nœud p trouvé, il faut parcourir les sous-arbres gauche et droit de p de et à chaque fois insérer le nœud courant
dans la liste.
Nœud=struct
val : entier
suiv : ^nœud
fin
Liste = ^nœud
6-
Procedure rotation-droite( A : Arbre, p : Arbre)
Var
q : Arbre
Debut
q <- père(A,p) procedure de recherche du père d’un nœud p dans un arbre de racine A (voir TD)
si q^.g=p alors
rotation(p)
q^.g ← p
sinon
rotation(p)
q^.d ← p
fsi
fin
aux ← A
A ← aux^.g
Aux^.g ← A^.d
A^.d ← aux
Fsi
Fin