Académique Documents
Professionnel Documents
Culture Documents
Correction du TD 7
9 mai 2015
Exercice 1. Crible d'Erastosthne :
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
/*
void * calloc ( int nb_elem , int taille1 ) dans < stdlib .h > < malloc .h >
rserve une zone mmoire dont la taille en octets est nb_elem
* taille1 tous les lments sont initialiss 0
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
struct noeud {
int cle ;
struct noeud * succ ;
};
struct noeud * creer_noeud ( int cle ) {
struct noeud * p ;
if (( p =( struct noeud *) malloc ( sizeof ( struct noeud ) ) ) == NULL )
printf ( " erreur allocation memoire \ n ") ;
else p - > cle = cle ;
return p ;
}
void elimine ( int N , int M ) {
int i ;
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
1
2
3
4
5
int main ()
{
elimine (9 ,5) ;
return 0;
}
1
2
3
4
5
6
7
1
2
3
4
5
6
1
2
3
4
Element Creer_Liste_Vide () ;
void InsererElement ( Element tete , Element nouveau ) ;
void SupprimerElement ( Element e ) ;
Element CreerElement ( int cle ) ;
void AfficherListe ( Element tete ) ;
void SupprimerListe ( Element tete ) ;
/* Crer la sentinelle */
Element Creer_Liste_Vide ()
{
Element E ;
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
return E ;
25
26
27
1
2
3
4
5
6
7
1
2
3
4
5
6
1
2
3
4
}
void SupprimerElement ( Element e )
{
e - > prec - > suiv = e - > suiv ;
e - > suiv - > prec = e - > prec ;
printf ( " je supprime la cl : % d \ n " , e - > cle ) ;
free ( e ) ;
}
Element CreerElement ( int cle )
{
Element e = ( Element ) malloc ( sizeof ( struct element ) ) ;
e - > cle = cle ;
return e ;
}
void AfficherListe ( Element tete )
{
Element iter ;
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
1
2
3
sentinelle = Creer_Liste_Vide () ;
for ( i =0; i <10; i ++)
InsererElement ( sentinelle , CreerElement ( i ) ) ;
AfficherListe ( sentinelle ) ;
SupprimerListe ( sentinelle ) ;
5
6
7
8
9
10
11
12
13
Exercice 4. Piles :
1
2
3
4
5
6
7
8
9
10
11
12
13
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
# define MAX_P
42
43
44
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
Exercice 6. Files :
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
# define MAX_F
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
}
/* --------------------------------------------------- */
int filevide ( file * f ) {
return (f - > tete == f - > queue )
}
/* --------------------------------------------------- */
int filepleine ( file * f ) {
if (f - > tete == (f - > queue +1) % MAX_F ) return 1;
else return 0;
}
/* --------------------------------------------------- */
void enfiler ( file *f , int x ) {
if ( filepleine ( f ) ) {
printf ( " erreur : emfiler : la file est pleine \ n " ) ;
return ;
}
30
31
32
33
34
35
36
37
38
39
40
41
/* --------------------------------------------------- */
int defiler ( file * f ) {
int x ;
if ( filevide ( f ) ) {
printf ( " erreur : defiler : la file est vide \ n " ) ;
return 0;
42
43
44
45
46
47
48
49
50
51
52
}
x = f - > tab [ f - > tete ];
if (f - > tete == ( MAX_F -1) ) f - > tete = 0;
else f - > tete = f - > tete + 1;
return x ;
/* --------------------------------------------------- */
void supprimerfile ( file * f ) {
free ( f ) ;
}