26
LOGO Algorithmique et Structures de données Soltana Ghanem : [email protected] 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

LOGO Soltana Ghanem : [email protected] 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

Embed Size (px)

Citation preview

Page 1: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

LOGO

Algorithmique et Structures de

données

Algorithmique et Structures de

données

Soltana Ghanem : [email protected]

1ère année IAG2009 - 2010

Institut Supérieur de Gestion de Tunis

Page 2: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 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

Page 3: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 4: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

Plan

4

Définitions1

Structures de données linéaires2

Exercice 33

Tableau contiguë

Liste chainée

File

Pile

Page 5: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 6: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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!

Page 7: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 8: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 9: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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 ] )

Page 10: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 11: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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 .

Page 12: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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)

Page 13: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

ud

Imp

lémen

tation

Page 14: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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)

Page 15: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

Liste chainée

15

Ajout : cas 1 : à la première position

12 7 8 18 3

22

12 7 8 18 322

Page 16: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

Liste chainée

16

Ajout : cas 2 à la nième position

12 7 8 18 3

22

12 7 8 22 18 3

Page 17: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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 !!

Page 18: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 19: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 20: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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…

Page 21: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 22: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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)

Page 23: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 24: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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

Page 25: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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 !!

Page 26: LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1 ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis

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