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

Structures de données IFT-2000 Abder Alikacem Les listes ordonnées Programmation générique en C++ Semaine 3 Département d’informatique et de génie logiciel.

Présentations similaires


Présentation au sujet: "Structures de données IFT-2000 Abder Alikacem Les listes ordonnées Programmation générique en C++ Semaine 3 Département d’informatique et de génie logiciel."— Transcription de la présentation:

1 Structures de données IFT-2000 Abder Alikacem Les listes ordonnées Programmation générique en C++ Semaine 3 Département d’informatique et de génie logiciel Édition Septembre 2009

2 Laboratoire #3  Nous vous fournissons 3 packetages, un par projet/implantation que vous devez faire: tableau dynamiquetableau dynamique liste doublement chaînéeliste doublement chaînée liste circulaireliste circulaire Implantation d’une liste ordonnée Dans chacun d'eux, vous devez compléter le fichier.inl étant donné le modèle d'implantation décrit dans la partie privée de la classe Liste. Bien entendu, les 3 implantations demandées doivent être génériques. Ces 2 main()Ces 2 main() fournis sont pour tester les 3 packetages (séparément), un main() pour instancier une liste ordonnée d'entiers et un autre pour déclarer une liste d'objets définis dans la classe ClasseTests.h que nousClasseTests.h vous fournissons également. Uniquement ceci pour cette semaine

3 • Un tableau alloué du monceau (tas ou heap) • Taille décidé par l’utilisateur #include using namespace std; #pragma warning( disable : 4290 ) template class Liste { public: //… private: int tailleMax; // taille maximum de la liste int cpt; // cardinalité de la liste T * tab; // tableau "dynamique" contenant les éléments de la liste } ; #include "Liste.inl" Liste ordonnée   Implantation dans un tableau dynamique

4 Gestion du tableau dynamique  Il faut donc modifier le constructeur d’une liste: • allouer un tableau sur le tas et dont le pointeur sera assigné à au membre privé tab. template Liste ::Liste (int max) throw(bad_alloc) { tailleMax=max; cpt = 0; tab = new T [tailleMax]; }  Le destructeur de la liste : • Libération de l’espace du tableau pointé par tab template Liste ::~Liste () // Destructeur { delete [] tab ; cpt = tailleMax = 0; }   Constructeur   Destructeur

5 Gestion du tableau dynamique  Il ne faut pas oublier le constructeur de copie: • allouer un tableau sur le tas et dont le pointeur sera assigné à au membre privé tab puis copier de l’instance source template Liste :: Liste(const Liste & source) throw (bad_alloc) { tailleMax = source.tailleMax; cpt= source.cpt; tab = new T [tailleMax]; for (int position =0; position < source.cpt; ++position) tab[position]= source.tab[position]; }   Constructeur de copie

6 Gestion du tableau dynamique  et la surcharge de l’opérateur = • allouer un tableau sur le tas et dont le pointeur sera assigné à au membre privé tab puis copier de l’instance source, ne pas oublier de nettoyer… template Liste & Liste ::operator = (const Liste & l) throw(bad_alloc) { if (tab!=0) delete [] tab; //nettoyer... tab=new T [l.tailleMax]; for (int i=0; i< l.cpt; i++) tab[i]=l.tab[i]; tailleMax=l.tailleMax; cpt=l.cpt; return (*this); }   Surcharge de l’opérateur =


Télécharger ppt "Structures de données IFT-2000 Abder Alikacem Les listes ordonnées Programmation générique en C++ Semaine 3 Département d’informatique et de génie logiciel."

Présentations similaires


Annonces Google