Hi! I'm programming a simple linked list and I don't know if my ClIterator is correct... I'm actually coding in french but I know that code is code in every language so I hope you will help me even if you don't speak french...
Here my ClIterateur class... If you have some problem, just post and I'll answer soon.
Code:
class ClIterateur
{
friend class ClListe<T>;
public :
ClIterateur()
: m_pNoeud(0), m_estPremierElementDeLaListe(false)
{}
ClIterateur(TypeNoeud* adresse, bool estPremier)
: m_pNoeud(adresse), m_estPremierElementDeLaListe(estPremier)
{}
T operator*() const
{
return m_pNoeud->donnee;
}
T& operator->() const
{
return &m_pNoeud->donnee;
}
ClIterateur& operator++()
{
if (m_estPremierElementDeLaListe)
{
m_estPremierElementDeLaListe= false;
}
else
{
m_pNoeud= m_pNoeud->pSuiv;
}
return *this;
}
ClIterateur operator++(int) // i++
{
ClIterateur ancienIterateur= *this;
if (m_estPremierElementDeLaListe)
{
m_estPremierElementDeLaListe= false;
}
else
{
m_pNoeud= m_pNoeud->pSuiv;
}
return ancienIterateur;
}
bool operator==(ClIterateur p_it) const
{
return (m_pNoeud == p_it.m_pNoeud && m_estPremierElementDeLaListe == p_it.m_estPremierElementDeLaListe);
}
bool operator!=(ClIterateur p_it) const
{
return m_pNoeud != p_it.m_pNoeud || m_estPremierElementDeLaListe != p_it.m_estPremierElementDeLaListe;
}
private :
TypeNoeud* m_pNoeud;
bool m_estPremierElementDeLaListe;
explicit ClIterateur(TypeNoeud* p_pNoeud)
: m_pNoeud(p_pNoeud), m_estPremierElementDeLaListe(false)
{}
};
What my ClIterateur class is supposed to do : Keep a pointer on a TypeNoeud element (TypeNoeud is a special struct which have a data and a pointer on the next element) and a boolean if it's the first element of the list. But I don't think it is working correctly...