Dr. Omari Mohammed
Maître de Conférences Classe A
Université d’Adrar
Courriel : omarinmt@gmail.com
SUPPORT DE COURS
Matière : Algorithmiques et Structures de Données 1
Niveau : 2
ème
Année Licence en Informatique
-1-
ALGORITHMIQUES ET STRUCTURES DE
DONNEES 1
Programme :
1- Rappel sur les structures de données simples : tableaux, listes chaînées.
2- Structures de données séquentielles : piles, files, listes.
3- Structures de données en table : hachage.
4- Structures de données hiérarchiques : arbres.
5- Arbres binaires de recherche.
6- Arbres AVL.
7- Arbres bicolores.
8- B-arbres.
9- Les notations asymptotiques et la complexité d’un algorithme.
10- Preuve d’exactitude d’un algorithme
11- L’algorithme de tri par arbre (heapsort).
Ouvrages :
1- « Arbres, tables, algorithmes », Jacques Guyot, édition Chihab.
2- « Introduction à l’algorithmique », Thomas Corman, édition Dunod.
3- « Introduction to Algorithms », Cormen, Mc Graw Hill edition.
4- « Apprendre à programmer en Turbo C », Claude Delannoy, édition Chihab.
-2-
Rappels sur les Tableaux et les Listes Chaînées
Dans la plupart des ordinateurs, la mémoire principale est formée d’une
suite de cellules de même taille, repérable à l’aide d’une adresse.
Pour représenter les structures de données en mémoire principale, on a
essentiellement deux modes de stockage : le stockage par tableau (stockage
contigu), et le stockage par pointeur ou liste chaînée (stockage dispersé).
I- Les Tableaux :
L’élément représentatif des structures statiques homogènes est le tableau
que l’on trouve dans la majorité des langages évolués de programmation.
L’allocation de l’espace mémoire d’un tableau est souvent statique.
I-1 Les Tableaux Monodimensionnels :
Le tableau monodimensionnel est la représentation informatique d’un
vecteur de l’espace. Il est constitué d’un ensemble d’élément accessible à l’aide
d’un indice. Cet accès direct est garanti en cas de lecture ou écriture.
#include <stdio.h>
#include <conio.h>
/* Variables Globales*/
int A[100] ;
int I, NombreMax ;
void main() {
/* Effacer l’écran*/
clrscr();
/* Lecture de la taille du tableau*/
printf(“Donner la taille du tableau : ”);
scanf(“%d”,&NombreMax);
/* Lecture des éléments du tableau*/
printf(“Donner les éléments du tableau : \n”);
for(I = 0 ; I <= NombreMax-1 ; I++)
scanf(“%d”,&A[I]);
-3-
/* Affichage des éléments du tableau*/
printf(“Voici le contenu du tableau : \n”);
for(I = 0 ; I <= NombreMax-1 ; I++)
printf(”%d\n”, A[I]);
/* Pause avant quitter*/
getchar();
getchar();
}
I-2 Les Tableaux Multidimensionnels :
Un élément de tableau multidimensionnel est repéré à l’aide de plusieurs
indices au lieu d’un seul. Néanmoins, la représentation physique dans la
mémoire principale est presque la même.
Alors quelque soit la dimension d’un tableau multidimensionnel, sa
représentation physique est toujours linéaire.
1
5
7
………...
9
2
7
10
………...
2
8
4
5
………...
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A[1]
A[2]
A[3]
A[4]
100
102
104
106
Mémoire
5
9
25
-10
Représentation physique
d’un tableau monodimensionnel
A[1][1]
A[1][2]
A[2][1]
A[2][2]
100
102
104
106
Mémoire
5
9
25
-10
Représentation physique
d’un tableau multidimensionnel
-4-
Elément Adresse
A[I] @A[1] + (I-1) * TailleElement
A[I][J] @A[1][1] +(I-1) * TaillePremiereDimension
+(J-1) * TailleElement
II- Les Listes Chaînées :
Lorsque le besoin de conserver la mémoire s’élève, il sera nécessaire
d’implémenter les structures de données en utilisant les pointeurs ou les listes
chaînées, où les données sont organisées séquentiellement. Le principe de base
de leur représentation est de suivre les évolutions de la structure, en lui
attribuant de la place en mémoire quand elle grandit, et en la récupérant quand
elle diminue. Ceci est réalisé par un principe d’allocation et libération
dynamique d’espace mémoire. Le TAS (HEAP) est la plage d’espace mémoire
réservée juste pour l’allocation dynamique.
Dans les langages modernes, on dispose de deux procédures standard
d’acquisition et de libération d’espace mémoire : RESERVE et LIBERE.
La procédure RESERVE La procédure LIBERE
Langage Pascal new() dispose()
Langage C malloc() free()
Mémoire
Espace réservé pour les
variables, tableaux,
environnement des
procédures, … (statiques)
Espace réservé pour les
listes chaînées,
environnement des
procédures, … (dynamique)
TAS
1 / 60 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !