GEF 243B Programmation informatique appliquée Décisions de design avec structures de données §15.1 – 15.2.

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
GEF 243B Programmation informatique appliquée
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
GEF 243B Programmation informatique appliquée
Tris.
Chap. 4 Recherche en Table
GEF 243B Programmation informatique appliquée Boucles §
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Considération de temps.
GEF 243B Programmation Informatique Appliquée
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Structures §12.3.
GEF 243B Programmation informatique appliquée Expressions et opérateurs §
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Architecture du logiciel II.
GEF 243B Programmation informatique appliquée
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Modélisation II.
GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
GEF 243B Programmation informatique appliquée Listes chaînées II §15.1 – 15.2.
GEF 243B Programmation informatique appliquée Pointeurs et adresses §9.1.
GEF 243B Programmation informatique appliquée Flot de contrôle et énoncés de sélection §
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Chap. 1 Structures séquentielles : listes linéaires
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Cours 8 Arbres équilibrés
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Récursivité.
Tableau croisé dynamique sous Excel (TCD).
Les structures de données arborescentes
Initiation aux bases de données et à la programmation événementielle
II. Chaînage, SDD séquentielles
Définition d’un maillon de liste
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Gestion de Fichiers Arbres B.
L’utilisation des bases de données
Introduction au langage PHP Réfs : Chap 3 p 49. Présentation PHP (Hypertext PreProcessor) est un langage de développement Web créé en 1994 par Rasmus.
Etude de cas : buffer clavier
Les fichiers indexés (Les B-arbres)
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
Présentation Structures de Données et TDA
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Excel (Partie 2).
Les Algorithmes de Tri Introduction Tri par Sélection
Structures des données
Le langage C Structures de données
Création et présentation d’un tableau avec Word 2007
Ch. PAUL - Piles et Files à l'aide de listes chainées
II. Chaînage, SDD séquentielles
ETNA – 1ème année Guillaume Belmas –
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Cours LCS N°4 Présenté par Mr: LALLALI
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Files de priorité (Priority Queue)
CSI2510 Structures des Données et Algorithmes
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Transcription de la présentation:

GEF 243B Programmation informatique appliquée Décisions de design avec structures de données §15.1 – 15.2

21-Jan-14 2 JGA Beaulieu Revue Décrivez les étapes pour traverser une LC Décrivez les étapes pour éliminer un nœud Décrivez les étapes pour insérer un noeud

21-Jan-14 3 JGA Beaulieu Synopsis Structures de données ordonnées et désordonnées Tableaux ordonnés Tableaux désordonnés Listes chaînées désordonnées Listes chaînées ordonnées Choisir la bonne structure de données LC ordonnées avec plusieurs critères dordonnancement LC double

21-Jan-14 4 JGA Beaulieu Structures de données ordonnées et désordonnées Quand on veut utiliser des structures de données telles que les tableaux et les LC, il y a des compromis dans les temps dexécution que nous devons connaître Quand nous avons des séquences de struct, nous avons à faire deux décisions majeures basées sur ces compromis Sélection de la structure de données (tableaux ou LC) et Décider si on utilise une séquence ordonnée ou désordonnée

21-Jan-14 5 JGA Beaulieu Les éléments dans un tableau et une LC peuvent être ordonnés en utilisant une clé dans la structure Cette clé peut être nimporte quel champ dans la structure: surnom, prénom, numéro_de_collège, grandeur, pesanteur, NAS,… Lordonnancement peut aussi être faite avec une combinaison de deux clés: Par surnom (clé primaire) en premier et prénom ensuite (clé secondaire) Structures de données ordonnées et désordonnées

21-Jan-14 6 JGA Beaulieu Nous avons discutés que les tableaux ont des limitations sur la performance si nous voulons garder les éléments dans un ordre quelconque Les opérations dinsertion et délimination prennent un temps dexécution qui est proportionnel au nombre déléments dans le tableau Dans le pire cas, vous pourriez avoir à déplacer tout les éléments dans le tableau Cependant, la recherche dans un tableau ordonné peut être fait très rapidement avec une recherche binaire Tableaux ordonnés

21-Jan-14 7 JGA Beaulieu Tableaux de structures - rappel Éliminer un élément dans un tableau: Insérer un élément dans un tableau:

21-Jan-14 8 JGA Beaulieu Insertion déléments dans un tableau désordonné est très rapide; Vous mettez le nouvel élément à la fin du tableau dans la première case libre Pour que cela soit rapide, vous devez garder une variable qui contient la première case libre Les opérations de recherche et élimination dans un tableau en désordre sont cependant proportionnels au nombre déléments dans le tableau Tableaux désordonnés

21-Jan-14 9 JGA Beaulieu Les listes chaînées contrairement aux tableaux nont pas dindexes; donc même si votre LC est ordonnée, vous ne pouvez pas utiliser de recherche binaire Vous ne pouvez pas sauter au milieu de la LC parce quil ny a pas de nom symbolique pour chaque nœud Peut importe quelle décision de design que vous prenez pour lordonnancement de votre LC, vous devez toujours revenir à la tête de la liste et de passer de nœud à nœud pour toutes les opérations (recherche, insertion et élimination) Listes chaînées désordonnées

21-Jan JGA Beaulieu Il est évident que le temps de recherche dans une LC désordonnée est proportionnel au nombre déléments dans la liste. Lélimination dun nœud dans la LC est aussi proportionnelle au nombre déléments dans la liste (on doit trouver lélément avant déliminer) Linsertion dans une LC désordonnée est cependant très rapide – vous pouvez insérer à la tête ou à la queue immédiatement Le nombre déléments dans la liste naffecte pas cette opération Listes chaînées désordonnées

21-Jan JGA Beaulieu Si votre LC est ordonnée, alors vous pouvez arrêter de chercher aussitôt que vous avez trouvé votre structure(s) ou quand vous avez passé le point où la structure devrait être (vous savez alors quelle nest pas dans la liste) Si cest votre intention de chercher souvent (en comparaison avec linsertion ou lélimination des éléments), la liste chaînée ordonnée est une amélioration sur les LC désordonnées Mais encore dans le pire cas, vous pourriez avoir à traverser la LC au complet – e.i. cest encore proportionnel au nombre déléments dans la LC Liste Chaînées ordonnées

21-Jan JGA Beaulieu Si vous avez lintention dinsérer et déliminer beaucoup de nœud régulièrement et de faire relativement peu de recherches; utilisez une LC désordonnée Si lintention est de faire peu de changements dans votre séquence et de faire relativement beaucoup de recherches; il est mieux dutiliser un tableau ordonné. Vous devriez aussi avoir une bonne idée de la grandeur de votre tableau Choisir la bonne structure de données

21-Jan JGA Beaulieu Une des puissances des LC est dêtre capable dordonner la même LC de deux façons différentes, en utilisant deux pointeurs dans chaque nœud En fait vous pourriez utiliser N pointeurs dans chaque noeud pour ordonner de N différentes façons; Si vous voulez faire ceci avec des tableaux, vous allez avoir besoin de N tableaux ou bien de N opérations dordonnancement pour faire la même chose Ex.: Si je veux être capable dimprimer une liste ordonnée des étudiants du CMR par surnom ou numéro de collège, je pourrais utiliser une LC avec deux pointeurs pour garder ces relations LC ordonnée avec plusieurs critères dordonnancement

21-Jan JGA Beaulieu typedef struct JAMBON_NOEUD_ETUDIANT { char prenom[15]; char surnom[25]; unsigned long numeroDeCollege; float moyenne; struct JAMBON_NOEUD_ETUDIANT* pProchainNom; struct JAMBON_NOEUD_ETUDIANT* pProchainNum; } NOEUD_ETUDIANT; //nom du type STUDENT_NODE* pListeEtudiants = NULL; STUDENT_NODE* pListeNum = NULL; LC ordonnée avec plusieurs critères dordonnancement

Allard pProchainNum pProchainNom Allen pProchainNum pProchainNom Baar pProchainNum pProchainNom Alpo pProchainNum pProchainNom 0 0 pListeEtudiants pListeNum

21-Jan JGA Beaulieu LC Double Comme nous venons de le voir, il est possible davoir deux pointeurs pour créer deux LC pour le prix dune ou proche; le pointeur extra prend de la mémoire. On peut utiliser ce concept pour plus que lordonnancement. Une LC double est une liste chaînée qui peut être traversé dans les deux sens De la tête à la queue et de la queue à la tête Pour construire une LC double on inclus un pointeur prochain et un prédécesseur dans la structure de nœud Nous déclarons aussi un pointeur qui pointe à la queue similaire à la tête

21-Jan JGA Beaulieu typedef struct JAMBON_NOEUD_ETUDIANT { char prenom[15]; char surnom[25]; unsigned long numeroDeCollege; float moyenne; struct JAMBON_NOEUD_ETUDIANT* pProchain; struct JAMBON_NOEUD_ETUDIANT* pPrecedent; } NOEUD_ETUDIANT; //nom du type STUDENT_NODE* pTete = NULL; STUDENT_NODE* pQueue = NULL; LC double

Allard pPrecedent pProchain Allen pPrecedent pProchain Baar pPrecedent pProchain Alpo pPrecedent pProchain 0 0 pTete pQueue

21-Jan JGA Beaulieu LC Double Lopération de traverse est similaire à celle pour les LC simples mais elle est plus puissante parce que lon peut reculer Les opérations dinsertion et délimination doivent assigner des valeurs aux deux pointeurs, prochain et précédent Une petite augmentation en temps

21-Jan JGA Beaulieu Exercice Donnez le code pour enlever un nœud dune liste chaînée double. pTraverse pointe au nœud à enlever

21-Jan JGA Beaulieu Quiz Time Quelle genre de structure est-ce que je devrais utiliser si je veux garder en mémoire les membres du parlement et que je veux être capable de faire des recherches fréquentes? Ordonnée? Quelle genre de structure de données est-ce que je doit utiliser pour stocker les lettres que mon robot lit si je ne sais pas combien de lettres je vais lire? Ordonnée?