J'arrive pas à trouver le code d'une liste contigue circulaire ???

Signaler
Messages postés
2
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
1 mai 2010
-
Messages postés
416
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
19 décembre 2013
-
slt si quelqu'un a le code  n'hésiter pas  s'il vous plais j'ai 1 projet à rendre

2 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Et pourquoi tu le ferais pas toi-même (c'est le principe d'un projet à la base)?
Messages postés
416
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
19 décembre 2013
2
Bonjour l'ami,

voici un exemple en c++:

/******************************************
*                  Declaration   header
******************************************/
typedef struct
{
    const int __valeur;
    PSNoeud __suivant
}SNoeud, *PSNoeud;

class SListe
{
    public:
       SListe(void);
       ~SListe();

      const bool ajouterValeur(const int valeur, const unsigned rang=0);
      const bool enleverValeur(const int valeur, const unsigned rang=0);
      const unsigned rechercherValeur(const int valeur) const;
      const bool remplacerValeur(const int valeur, const unsigned rang=0);
       void viderListe(void);
       inline const unsigned taille(void)const{return __taille;}

   private:
       unsigned __taille;
       SNoeud __racine;
};

/*****************************************
*                  Implementation   source
*****************************************/

SListe::SListe(void)
{
    __racine.__suivant = &__racine;
    __taille = 0;
}//cons
SListe::~SListe()
{
       viderListe();
}//dest

const bool SListe::ajouterValeur(const int valeur, const unsigned rang)
{
    PSNoeud noeud = new Noeud();
    if(!noeud)return false;
    noeud->__valeur = valeur;

       const PSNoeud const racine = &__racine;
       PSNoeud iterateur = &__racine;
       unsigned compteur = rang;
       noeud->__suivant = &__racine;
       while(compteur-- && iterateur->__suivant!=racine)iterateur = iterateur = iterateur->__suivant;
       noeud->__suivant = iterateur->__suivant;
      iterateur->__suivant = noeud;
      ++__taille;

    return true;
}//met

SListe::const bool enleverValeur(const int valeur, const unsigned rang)
{
    if(__taille==0)return false;
   bool premierTrouve = (rang>=__taille);
    PSNoeud iterateur &__racine, noeudAdetruire 0;
    unsigned compteur = rang;
    do
    {
       if(iterateur->__suivant->__valeur == valeur)
       {
            noeudAdetruire = iterateur->__suivant;
            if(premierTrouve)break;
        }//if
    }while(compteur--);//while
 
    if(!noeudAdetruire)return false;
    iterateur->__suivant = noeudAdetruire->__suivant;
    delete noeudAdetruire;
    --__taille;
    return true;
}//met

const unsigned SListe::rechercherValeur(const int valeur) const
{
    if(__taille ==0 ) return __taille+1;    unsigned rang 0, taille __taille;
    PSNoeud iterateur = __racine.__suivant;
    while(iterateur->valeur!=valeur && taille--)
    {
       iterateur = iterateur->__suivant;
       ++rang;
    }//while
    if(iterateur==&_racine)return __taille+1;
    return rang;
}//met

const bool SListe::remplacerValeur(const int valeur, const unsigned rang)
{
    if(rang>=__taille || __taille==0)return false;
    bool premierTrouve = (rang>=__taille);
    PSNoeud iterateur = __racine.__suivant;
    unsigned compteur = rang;

    do

    {

       if(iterateur->__valeur == valeur)

       {
             if(compteur)continue;

            if(premierTrouve)
            {
                iterateur->__valeur = valeur;
                break;
             }//if

        }//if

    }while(compteur--);//while
    if(iterateur==&_racine)return false;
    iterateur->__valeur = valeur;
}//met

SListe::viderListe(void)
{
    if(__taille)

    {

       PSNoeud iterateur = __racine.__suivant, noeudAdetruire=0;
       __racine.__suivant = &racine;

       while(iterateur!=&__racine)

       {

              noeudAdetruire = iterateur;

              iterateur = iterateur->__suivant;

              delete noeudAdetruire;

       }//while
    }//if
    __taille = 0;
}//met

code tape intuitivement, j'espere que ca va aider, Salut
je suis heureux de faire partie d'une grande famille ...!