- Utilités d'une structure de données
Pour bien créer les algorithmes de résolution de problèmes, il n'est pas suffisant de bien manier les structures de contrôle( séquentielle, itérative, alternative), il faut en plus bien choisir la structure de données.
Pour définir une structure de données, il faut préciser :- leur spécification fonctionnelle ( les opérateurs et leurs propriétés)
- leur description logique
- leur représentation ( ou implémentation) physique en mémoire
- Types de données
|
|
||
|
|
|
|
|
|||
|
|
||
|
|||
|
|||
|
|
||
|
|||
|
|
||
|
|
||
|
|||
|
|||
|
|||
|
|||
|
|
||
|
|
||
|
|||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|||
|
|||
|
|
|
|
|
|||
|
|||
|
|
||
|
|
||
|
|
||
|
- Structures de données
- non linéaires :
On relie un élément à plusieurs suivants et non plus à un seul- les graphes
- les arbres
- linéaires :
il existe entre les éléments une notion de "séquence" : 1er, 2ème, …, dernier. - les tableaux :
On peut alors regrouper un nombre fixe de données de même type.
Un vecteur est construit en une seule fois.En Turbo-Pascal
Program gestiontableau ;
uses winCrt ;
const Nmax = 5 ;
type tableau = array[1..Nmax] of integer ;
var v : tableau ;
begin
or i := 1 to Nmax do begin
write(‘v[‘,i,’] = ’) ;
readln(v[i]) ;
end ;En Caml
let n = 5 and v =[|0;0;0;0;0|] in
begin
for i = 0 to ( n – 1 )
do
print_string "entrez v[" ;
print_int i ;
print_string "]= ";
v.(i) <- read_int() ;
done ;
v ;
end ;;L’accès à un élément de vecteur se fait en un temps constant et indépendant du rang.
L’accès aux éléments se fait par le rang.En Turbo Pascal
v[3] := 8 ;
for i := 1 to Nmax do writeln(‘v[‘,i,’] = ’,v[i]) ;En Caml
v.(0) ; ;
v.(1) <- 4 ; ;
v ; ;
- non linéaires :
- les listes chaînées
On peut alors regrouper un nombre quelconque et variable de données de même type.
C’est une structure de donnée efficace en informatique.
On distingue- la liste chaînée classique
- les listes chaînées particulières :
- les piles (LIFO : Last In, First Out)
- les files (FIFO : First In, First Out)