Académique Documents
Professionnel Documents
Culture Documents
CHAP1
STRUCTURE DE DONNEES LINEAIRES
Une structure de donnée est complètement implementée par un titre abstrait ie ensemble de
donnée et d’operations appllicables a ces données.
Une structure linéaire est une structure qui a la caractéristique fondamentale de definir une
fonction ‘’successeur’’ qui a chaque élément de la structure(sauf éventuellement le dernier) fait
correspondre un autre élément de la même structure. Dans une structure linéaire, les éléments sont
contigus(les uns à la suite des autres).
étudiant complexe
-Nom
- Prenom - Réel
- Matricule - imaginaire
- filiere
e e e e e e
E1 E2 E3
Les tableaux Les listes chainées
La compléxité en temps est donnée sous la forme d’un ordre de grandeur sur le temps telle que
resumé dans le tableau ci-après.
Temps Complexité
O(1) Constante
O(log(n)) Logarithmique
O(√n) Racinaire
O(n) Linéaire
O(n2) Quadratif
O(n3) cubique
Tableaux :
Définition : <>
On distingue :
Int i = 0 ;
Int trouve = 0 ;
If(t[] == V){
Trouve = 1 ;
Break ;
i++ ;
Return trouve ;
03 situations se presentent :
- Soit vec[m] = V
- Soit vec[m] sup V, v € [inf..........m-1]
- Soit vec[m] inf V, v € [m+1.......sup]
0 1 2 3 4 5 6 7 8
Vec 10 20 30 40 50 60 70 80 90
Int V = 70
m = (0+8)/2 = 4
10 20 30 40 50 60 70 80 90
m = (5+8)/2
=6
V € [inf............m-1]
V € [m+1............sup]
T(n) = T(n/2) + 1
Les tableaux à deux dimensions(matrices)
#define NBL 5
#define NBC 4
Int Mat[NBC][NBC]
Exple :
0 1 2 3
4
Parcours d’une matrice
Une matrice se parcourt à l’aide de deux boucles imbriquées :
Printf(‘’%d’’, mot[i][j]) ;
p
n+1
pointeur
Variable pointée
L’opérateur de puce d’adresse « @ » est un opérateur
unaire qui s’applique à une identification des variables.
Il ne s’applique pas à des constantes.
Exple :
int n ;
int t[N] ;
@n adresse de la variable n
@t = interdit
Déclaration de pointeur et adresse
Comme pour les tableaux, il n’existe pas de type pointeur en
C. Une variable pointeur est definie par un déclarateur
pointeur.
Exple :
Int *P=@x
*P=@y P
P
POINTEURS ET TABLEAUX
Les déclarations suivantes sont equivalentes en ce sens que t
et P sont des chaînes de caractère :
Date *d ;
L’accès à un champ du pointeur *d se définit par :
J m a
(*d).j = 2 ; 2 12 2016
(*d).m = 12 ;
(*d).a = 2016 ;
Le typage :
Type (d) = Date*
Type((*d).j) = short
D j=2
D m = 12 D a = 2016
STRUCTURES DE DONNEE LISTE
L 1 2 3
Une liste est une suite d’un nombre variable d’objets appelés
ELEMENTS DE LISTE. Une liste simplement chaînée est
une liste dans laquelle chaque élément sauf le dernier pointe vers
son successeur.
1 2 3
Liste bilatere
1 2
Int info ;
} *listeEntiere ;
infos next
Listeentier P ;
cellule
10 20 30
Void Parcours( ListeEntier l) {
ListeEntier p = l ;
Printf(‘’%d’’, p info ) ;
P=p next ;
Printf(‘’%d’’, P info) ;
}
INSERTION DANS UNE LISTE
- Insertion en tête
L 12 12
Créons la nouvelle cellule a insérer :
new 2
L 12 12
une fois que la liste est crée, 02 conditions se precisent :
Créer une nouvelle
new 2 cellule, c’est
fabriquer une
si la liste est vide, l’on retourne la nouvelle cellule. nouvelle liste
Sinon, proceder à l’insertion de la cellule dans la liste suivant ce schéma :
ListeEntier insertête(ListeEntier l , int V) {
New info = V ;
If(l==null)
Return new ;
Else {
New next = l ;
L = new ;
Return l ;
LISTES CHAINEES SUITE
1 2 3
Printf(‘’%d’’, p info ) ;
P=p next ;
P2 next = P ;
n+1
P=P;
P Return P ;
P2
Malloc : allocation d’espace en mémoire.
ListeEntier P2 ;
P2 next = NULL ;
If(P == null)
Return P2 ;
Else {
P2 next = P ;
P=P;
Return P ;
}
P2
- Insertion en Queue
P 12
P2 1 2
P1 = P
P=P next
SUPPRESSION DANS UNE LISTE
P1 next = null
Free(P1)
P2
P2 next = 3
NULL
P 1 2 3
Free(P1)