Les Listes I. Introduction : 1. une Liste est une classe d'objet ( type de donnée abstrait ) possédant les comportements suivant : Insertion. Suppression. Exploration. Recherche. 2. Implémentation de liste : Avec un Tableau Avantages Inconvénients Utilisations Tri facile Exploration simple accès rapide à un élément Insertion compliquée Suppression compliquée Taille définie Gaspillage de mémoire Bdd Conversion Avec une Insertion en tête facile Tri difficile Liste Suppression facile Exploration possible dans simple de Parcours simple un seul sens références Taille indéfinie temps de recherche (ou de Economie de mémoire pointeurs ( pas de trous, pas de en C) réservation de mémoire fixe ) Avec une Exploration dans deux sens liste de donc certaines opérations double de sont plus rapides références Programmation système ( liste de processus, management de mémoire) Compléxité 3. Avec C# : les classes permettant d'implémenter des listes sont rassemblés sous le termes de collection. Par exemple : l'exploration de la liste se fait comme pour un tableau en utilisant « foreach » (c) F.Minon 2008 II. Implémentation par une Liste de références ( ou de pointeur) : 1. Principes : Chaque éléments d'une liste contient une référence à l'élément suivant de la liste. Le premier élément de la liste est référencé par une tête de liste ( Head). Le dernier élément contient une référence sur le suivant égale à null. Donné Référence de e l'élément suivant Un élément de la liste Têt e Donné Suivan e t Donné Suivan e t Donné e 2. Opérations fondamentales : a) Algorithme d'insertion en tête de liste : b) Algorithmes d'exploration : c) Algorithme de recherche : d) Algorithmes de suppression : En début de liste. Connaissant la référence de l'élément. (c) F.Minon 2008 null 2. Exemple de description d'une liste de référence et algorithme des opérations : classe Elément attributs privés : Donnée : TypeDeDonnées ElémentSuivant : référence sur un Elément Méthodes publiques : Elément( données : TypeDeDonnées, référenceElément : référence sur un Elément); // constructeur FinClasse classe ListeRéférence attributs privés : Tête : référence sur un Elément Méthodes publiques : ListeRéférence() // constructeur début Tête <- null; // liste vide fin fonction InsertionDebut( données : TypeDeDonnées) : rien début si Tête = null alors Tête <- nouveau Elément( données, null); sinon Tête <- nouveau Elément( données, Tete); fin ... à vous d'écrire la suite : Suppression d'un élément en tête de liste : càd du premier élément. Parcours de liste. Suppression du nième élément de la liste. (c) F.Minon 2008 3. Implémentation en C# : a) Implémenter une liste de chaînes de caractères et écrire un petit programme de test en mode « console ». b) TP4 répertoire avec liste classe RepertoireListe dérivée de Repertoire. 4. Exercice : a) Concevoir l'algorithme de la méthode qui insère des mots dans l'ordre alphabétique dans la liste du 3). b) Implémenter en C# et imaginer un petit programme de test. c) En déduire un algorithme de tri d'une suite de mots. (c) F.Minon 2008 II. Listes doublement chaînées : 1. Principes : Chaque élément d'une liste contient une référence à l'élément suivant de la liste et à l'élément précédent. Le premier élément de la liste est référencé par une tête de liste ( Head), le dernier par une queue de liste ( End). Le dernier élément contient une référence sur le suivant égale à null. Le premier élément contient une référence sur le précédent égale à null. Tête Donné Précédent=nul e l Suivan t Donné Précéden e t Suivan t Donné Précéden e t Suivant=nul l Queue 2. Opérations fondamentales : a) Algorithme d'insertion en tête de liste : b) Algorithmes d'exploration : c) Algorithme de recherche : d) Algorithmes de suppression : En début de liste. Connaissant la référence de l'élément. (c) F.Minon 2008 2. Exemple de description d'une liste de référence et algorithme des opérations : (c) F.Minon 2008 II. Classes C# utilisable pour gérer des listes ( collections ): 1. Interface Ilist : elle déclare les principales opérations vu en I) 2. List<T> : classe du framework qui permet d'implémenter une liste d'objet de type T. NB 1 : remarquer la syntaxe pour une classe travaillant sur un type de donnée générique. List <T> s'appelle un patron, un template ou un pattern. NB 2 : utilise un tableau d'objet . NB 3 : un élément de la liste s'appelle un « item ». 3. LinkedList<T> : liste liée comme en II), liste de références. NB 1 : utilise une liste de références. (c) F.Minon 2008 III.Utilisation des collections Listes : 1. Composants window : ListBox. Voir exemple. 2. Récupération de données à partir de requêtes SQL. On peut classer les requêtes en deux catégories : • celles qui ne demandent pas de données • celles qui demandent des données ( interrogation ). Démarche : a. Sans demande de donnée : • • • • Connexion à la bdd. Ouverture de la connexion. Création et Initialisation de la commande avec une demande. Exécution de la commande. Fermeture de la connexion. b. Avec demande de données : • • • • • • 3. ... (c) F.Minon 2008 Connexion à la bdd. Ouverture de la connexion. Création et Initialisation de la commande avec une demande. Exécution de la commande avec retour de données dans une collection ( ou un tableau). Fermeture de la connexion. Récupérer les données dans la collection ( tableau ) renvoyé.