La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Présentation Structures de Données et TDA Chaînage dynamique –Retour sur les tableaux –Allocation dynamique –Liens entre les données –Chaînage dynamique.

Présentations similaires


Présentation au sujet: "Présentation Structures de Données et TDA Chaînage dynamique –Retour sur les tableaux –Allocation dynamique –Liens entre les données –Chaînage dynamique."— Transcription de la présentation:

1 Présentation Structures de Données et TDA Chaînage dynamique –Retour sur les tableaux –Allocation dynamique –Liens entre les données –Chaînage dynamique –Création de la classe Noeud –Exemples

2 Chaînage dynamique Retour sur les tableaux [ ] –Les tableaux en java sont statiques On ne peut pas augmenter ou diminuer le nombre de cases dun tableau en cours dexécution. Allocation dynamique Lorsquon crée un objet (new), lespace mémoire est alloué en cours dexécution. Nous pouvons libérer lespace mémoire dun objet en cours dexécution. Nous pouvons conserver des données à laide dun objet. Truc : Mettre les données dans des objets plutôt que dans un tableau.

3 Chaînage dynamique Liens entre les données –Dans un tableau statique les données sont consécutives en mémoire. –Les objets ne sont pas consécutifs en mémoire. Tableau Objets

4 Chaînage dynamique Il faut prévoir un mécanisme pour faire le liens entre les objets pour simuler un tableau. Chaînage dynamique –La stratégie est de créer une structure qui contient lobjet et un lien vers la donnée suivante. –On appelle un nœud, la structure qui contient lobjet et le lien vers le suivant. 1 Lien 5 7

5 La classe Nœud : //Une classe interne et ainsi on peut accéder directement aux //attributs à partir de la classe parent. Public class Nœud{ //attributs, lobjet + le lien private Object element; private Nœud suivant; //constructeur public Nœud(Object element, Nœud suivant){ this.element = element; this.suivant = suivant; }

6 Chaînage dynamique Exemple : Nœud tableau; //insertion dune donnée dans le tableau tableau = new Nœud(new Integer(1),null); //insertion dune donnée à la suite Noeud nœud = new Nœud(new Integer(5),null); tableau.suivant = noeud; tableau noeud 1 noeud 5 null Enveloppeur (wrapper)

7 Récupérer un élément dans le tableau (équivalent à tableau [n]) //Dans cet exemple, on ne lève pas dexception si n invalide public Object getElement(int n){ //on crée un nœud quon place au début du tableau Nœud position = tableau; int i = 1; /On se déplace tant quon a pas trouvé ce quon cherche ou //quon a pas atteint la fin du tableau (null) while(i != n && position != null){ position = position.suivant; i++; } if(position != null) return position.element; return null; ]

8 Structure de données Les listes

9 Structure de données Liste –Structure de données permettant de conserver des données consécutivement de façon linéaire. –Services offerts : Insérer un élément Enlever un élément Chercher un élément La liste est-elle vide ? Nombre déléments...

10 Structure de données Implémentation –Dans un tableau statique –Par chaînage dynamique Dans tous les cas on peut faire limplémentation en conservant des informations sur la liste à lextérieur de la liste

11 Représentation graphique –Dans un tableau statique –Simplement chaînée –Doublement chaînée Structure de données

12 Représentation graphique avec infos sur la liste Nombre déléments Debut Fin Information supplémentaire 4

13 Structure de données Implémentation du déplacement –À partir dun indice (comme un tableau) On passe toujours lindice en paramètre –Ex: liste.insere(element,2); //insère à la 2ième position –À partir dune position courante implicite dans la liste Linsertion se fait toujours à une position courante Exemple : liste.premier(); //position au premier élément liste.suivant(); //passe au suivant liste.insere(element); //insère à la 2ième position

14 Structure de données –Via un itérateur (une classe définie) fourni par la liste. Lutilisateur peut obtenir litérateur de la liste Iterateur position = liste.iterateur(); position.suivant() //déplace litérateur position.insere(element); *Rend le déplacement vraiment indépendant de la liste. *Cest la version implémentée dans Java (java.util.LinkedList et java.util.ListIterator)

15 Exemple dune classe itérateur La liste Structure de données Position courante Lien sur le précédent Un objet de la classe Iterateur

16 Structure de données Pourquoi choisir une implémentation plutôt quune autre ? –Tableau statique Nombre déléments maximum connu Données de petite taille –Simplement chaînée Nombre déléments maximum inconnu, beaucoup dinsertion et peu de recherche Données de grande taille (autre langage que Java)

17 Structure de données Pourquoi choisir une implémentation plutôt quune autre ? –Doublement chaînée Nombre déléments maximum inconnu, peu dinsertion et beaucoup de recherche -Itérateur -Sauve de lespace mémoire par rapport à la liste doublement chaînée -Rendre litérateur indépendant de la liste -Peut avoir plusieurs itérateurs sur une même liste

18 Structure de données Que faire pour implémenter une liste ? –Décider du choix de limplémentation –Décider des services à offrir –Implémenter un service à la fois –Tester tous les scénarios possibles (début, milieu, fin, vide) pour un service avant de passer au suivant –Tester des combinaisons (insère, insère, cherche, supprime, insère,...)

19 Structure de données Liste que nous implémenterons Debut Fin Nombre Éléments 4 Position courante

20 Structure de données Retour sur la pile et la file

21 Structure de données Implémentation dune pile en composant avec une liste –On peut voir la pile comme un cas particulier dune liste. –Empile //insèreDébut –Depile //getElement + supprime –estVide //estVide –Vider //supprimeTout –DepileSansEnlever //getElement

22 Structure de données Implémentons dune file avec une liste –On peut voir la file comme un cas particulier dune liste. –Enfile //insère à la fin –Defile //premier + getElement() + supprime –estVide //estVide –Vider //supprimeTout –DefileSansEnlever //premier + getElement()

23 Présentation Structure données abstraite (TDA) –Définition –Spécification vs implémentation –File –Pile

24 Structure de données Structure de données : –Conteneur de données du même type. Type de données abstrait –Une structure de données qui utilise lencapsulation Deux aspects –Services offerts (spécification des méthodes) –Implémentation

25 Structure de données Implémentation –Tableau statique Le nombre déléments maximum est limité. Lespace mémoire est réservé totalement à la compilation. –Chaînage dynamique Le nombre déléments est illimité. Lespace mémoire est réservé à lexécution sur demande.

26 Représentation graphique –Dans un tableau statique –Simplement chaînée Structure de données

27 Pile

28 Structure de données Pile (LIFO; Last In First Out) –Structure de données où on insère et on enlève toujours au début (dessus) –Même principe que la pile dans la vie courante Pile dassiette, pile de linge, … –Fortement utilisé en informatique Pile système, pile dopérateurs arithmétiques, …

29 Structure de données Service dune Pile –Empile //Élément sur le dessus de la pile –Depile //Enlève et retourne lélément //du dessus de la pile –estVide //retourne si la pile est vide –Vider //Enlève tous les éléments –DepileSansEnlever //Retourne lélément du dessus //sans lenlever de la pile

30 Antécédents et conséquents

31 Structure de données Les antécédents, les conséquents et la levée dexceptions deviennent importants. –Un antécédent non respecté lève une exception. –On doit annoncer Les conditions préalables (antécédent) Létat de la structure après lopération (conséquent) Les messages dexception

32 Structure de données Exemple: –Dépiler() Antécédent : la Pile ne doit pas être vide Conséquent : lélément nest plus dans la pile Throws PileVideException

33 File

34 Structure de données File (FIFO; First In First Out) –Structure de données où on insère à la fin et on retire au début (dessus) –Même principe que la file dattente dans la vie courante File à la banque, à lépicerie, … –Fortement utilisé en informatique Imprimante, réseau, …

35 Structure de données Service dune File –Enfile //Insère à la fin de la file –Defile //Enlève et retourne le premier de la //file –estVide //retourne si la file est vide –Vider //Enlève tous les éléments –DefileSansEnlever //Retourne lélément du dessus //sans lenlever de la file

36

37

38

39

40

41

42

43

44

45

46

47


Télécharger ppt "Présentation Structures de Données et TDA Chaînage dynamique –Retour sur les tableaux –Allocation dynamique –Liens entre les données –Chaînage dynamique."

Présentations similaires


Annonces Google