logo soltana ghanem : sultana.ghanem@gmail.com 1 ère année iag 2009 - 2010 institut supérieur de...
Post on 03-Apr-2015
106 Views
Preview:
TRANSCRIPT
LOGO
Algorithmique et Structures de
données
Algorithmique et Structures de
données
Soltana Ghanem : sultana.ghanem@gmail.com
1ère année IAG2009 - 2010
Institut Supérieur de Gestion de Tunis
Objectifs
Être capable de choisir la structure adéquate à chaque problème
connaître les structures de données linéaires
Pouvoir implémenter les structures de données linéaires
connaître les avantages et inconvénients de chaque structure
connaître l’utilité des structures de données
L’étudiant devra :
2
Références
Michel Divay : Algorithmes et structures de données génériques
Abdelali Guerid, Pierre Breguet, Henri Röthlisberger : Algorithmes et structures de données avec C++ et Java
Cours Mme Nahla Ben Amor : Algorithmes et structures de données , http://isgprog2.ifrance.com/
3
Plan
4
Définitions1
Structures de données linéaires2
Exercice 33
Tableau contiguë
Liste chainée
File
Pile
Définitions
5
C’est un programme écrit dans un langage naturel Algorithme
C’est une structure logique destinée à contenir des données, afin de leur donner une organisation
permettant de simplifier leur traitement
Structure de données
Définitions
6
Mise en situation :
Vous voulez créer une application qui calcule votre moyenne (6 matières)
Vous décidez de créer 12 variables qui serviront àcontenir les notes exemple : mat1_exam, mat2_exam..
On vous demande de réaliser une application qui calcule la moyenne de tout les étudiants de ta classe(40) Vous allez définir et gérer manuellement 40 * 12 variables!
Tableau contiguë
7
Un tableau est un ensemble de cellules contigües visant à Contenir des données homogènes
Un tableau est caractérisé par :• Un nom• Une taille physique• Le type des données qu’il va contenir
Tableau contiguë
8
12 7 8 18 3T =
Indice 21 3 4 5
Exemple :
• Pour récupérer la valeur d’une case : Nom_du_tableau [ indice ] T[4] contient la valeur 18
• Pour modifier une case : Nom_du_tableau [ indice ] = Valeur T[2] = 200
12 200 8 18 3
21 3 4 5
Tableau contiguë
9
Manipulation des tableaux contigües :
Suppression
Taille () : entier= une fonction qui retourne la Taille logique du tableau
• A la création du tableau initialiser la variable taille 0• Si une opération d’ajout est effectuée avec succès taille taille +1• Si une opération de suppression est effectuée avec succès taille taille -1
Récupérer ( indice : entier ) : Objet = fonction qui retourne l’élément à la position indice
Pré condition : • indice > 0 et indice <= taille ()
Traitement : retourner ( tableau [ indice ] )
Tableau contiguë
10
Ajouter ( élément : objet , indice : entier ) : booléenne = fonction qui ajoute l’élément dans le tableau à la position indice
Pré condition : • taille() < taille physique• indice > 0 et indice <= taille ()+1• élément à ajouter doit être de même nature que les
éléments contenus par le tableau
12 7 8 18 3
Ajouter ( 200 , 3 )
21 3 4 5
12 7 8 8 18 3
12 7 200 8 18 3
21 3 4 5
21 3 4 5 6
Tableau contiguë
11
Supprimer ( indice : entier ) : booléenne = fonction qui supprime l’élément se trouvant à la position indice
Pré condition : • indice > 0 et indice <= taille ()
Supprimer ( 3 )
12 7 200 8 18
21 3 4 5
12 7 8 8 18
21 3 4 512 7 8 18 18
21 3 4 5
L’élément d’indice 5 sera toujours présent mais l’décrémentation de la taille le rendra inaccessible .
Tableau contiguë
12
InconvénientsAvantages
Simple à implémenter et à manipuler
Simple à implémenter et à manipuler
Accès directe aux données
Accès directe aux données
On doit définir la taillemaximale au préalableOn doit définir la taillemaximale au préalable
L’espace mémoire doitêtre contiguë
L’espace mémoire doitêtre contiguë
Utilisation non optimisé de la mémoire
Utilisation non optimisé de la mémoire
Ajout et suppression en fin de tableau en O(1)
Ajout et suppression en fin de tableau en O(1)
Liste chainée
13
Une Liste est un ensemble de nœuds reliés entre eux
Une liste peut être caractériser par un nœud tête car ce dernier sera le point de départ pour retrouver les autres nœuds
Un nœud est une entité renfermant de l’information et ayant un pointeur sur le
nœud qui la suit
LIS
TE
Nœ
ud
Imp
lémen
tation
Liste chainée
14
12 7 8 18 3
Nœud
Pointeur
Tête de liste
suivant suivant
Exemple :
• la tête de liste représente le point d’accès à la liste• Chaque nœud :
• Renferme une information• Indique l’emplacement du prochain nœud
• Le dernier nœud ne pointe vers rien (null)
Liste chainée
15
Ajout : cas 1 : à la première position
12 7 8 18 3
22
12 7 8 18 322
Liste chainée
16
Ajout : cas 2 à la nième position
12 7 8 18 3
22
12 7 8 22 18 3
Liste chainée
17
Suppression: cas 1 : de la tête de liste
12 7 8 18 3
7 8 22 18 3
Il est préférable d’optimiser la mémoire !!
Il est préférable d’optimiser la mémoire !!
Liste chainée
18
Suppression: cas 2 : suppression d’un élément autre que la tête de liste
12 7 8 18 3
12 7 18 3
À supprimer
Liste chainée
19
InconvénientsAvantages
Utilisation optimale de la Mémoire
Utilisation optimale de la Mémoire
Toutes les opérations Sur la tête de liste sont en O(1)Toutes les opérations Sur la tête de liste sont en O(1)
L’accès aux données Est plus couteux (temps)L’accès aux données
Est plus couteux (temps)
Ajout à la fin de liste en O(n)
Ajout à la fin de liste en O(n)
L’espace mémoire ne doit pas être contiguë
L’espace mémoire ne doit pas être contiguë
La taille de la liste peut ne Pas être définie au préalableLa taille de la liste peut ne
Pas être définie au préalableGestion des
pointeursGestion des
pointeurs
File
20
Une file (Queue) est un type particulier de liste , où les éléments sont insérés en queue et supprimer en tête
Le nom vient des files d’attente à un guichet, où le premier Arrivé est le premier servi : FIFO (First In First
Out )
Les files sont d’un usage très répandu dans la programmation système : gestion des processus,
Gestion des imprimantes…
File
21
Exemple :
Un nouveau venu
Point de sorite
12 7 8 18 3
141 2 3 4 5
Station de traitement
• Seul le premier élément peut quitter la file• Les nouveaux éléments sont ajoutés à la fin de la file
File
22
Implémentation
Puisque les Files sont des cas particuliers de listes pourquoi ne pas utiliser ces dernières pour les implémenter ?
Doit-on utiliser les tableaux contigües ou les listes chainées?
Liste doublement chainée !!
Enfiler ( élément ) revient à faire ajouter ( élément , taille ()+1 )
Défiler ( ) revient à faire supprimer (1)
Pile
23
Une pile (stack) représente une séquences d’éléments accessibles par une seule extrémité appelée sommet
La stratégie de gestion d’une pile est : dernier arrivé, premier servi : LIFO ( Last In First Out )
Les opérations de mise à jour (insertion et suppression) , d’après la définition, se font à partir du sommet
Pile
24
12
7
8
18
3
Exemple :
Base
Sommet Je vois mieux maintenant !!
• Le sommet de la pile est le seul élément manipulable• Pour manipuler un élément se trouvant au milieu de la pile il faudra
dépiler tout ces prédécesseurs • Si on ajoute un nouvel élément il serra empiler au dessus du sommet
Pile
25
Doit-on utiliser les tableaux contigües ou les listes chainées?
Tableau contiguë !!
Empiler ( élément ) revient à faire ajouter ( élément , taille () +1 )
Dépiler ( ) revient à faire supprimer (taille () )
Sommet ( ) revient à faire récupérer ( taille () )
Les piles sont utilisées pour gérer les appels récursifs !!!!
liste chainée !!
Exercice : Quiz
26
Quel est la structure de données linéaire la plus adéquate à chaque problème?
1 La gestion d’une équipe de football
2 La gestion des demandes de location d’une voiture
Le problème des tours de Hanoï33
44 La gestion des clients d’une banque
Tableau contiguë
File
Pile
Liste chainée
top related