M3103 – TP2 Exercice 2

Dans le fichier list.hpp, créer la classe générique CList de signature suivante :

template 
class CList
{
private:
    CNode* m_Head;
public:
    CList ();
    ~CList ();
   //ajout en tête de liste
    void push_front (const T & val);
   //affichage
    void Show () const;
    //recherche d'un élément dans la liste, renvoie le pointeur du maillon si l'élément est présent, nullptr sinon
    CNode* Find (const T & val) const;
    //ajout d'une valeur après un maillon de la liste
    void Add (const T & val, CNode*);
    //détache un maillon de la liste et le supprime
    void Delete (CNode*);
};

Ecrivez le corps de toutes les fonctions de cette classe.

Tester votre classe avec le code suivant :

void ListeSimpleV2 ()
{
    cout << "ListeSimpleV2 : \n\n";

    CList AList;

    // Le dernier element cree est toujours le premier de la liste

    for (unsigned i (0); i < 5; ) 
    {
        AList.push_front (i++);
    }

    AList.Show ();

    int i;
    cin >>i;
    CNode* ptr = AList.Find (i);
    AList.Add (3*i, ptr);
    AList.Show ();

    cout << ((ptr != NULL)?  " " : "non ") << "trouve" << endl;

}