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

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

2 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
11 avril 2008 à 16:20
Et pourquoi tu le ferais pas toi-même (c'est le principe d'un projet à la base)?
1
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
11 avril 2008 à 16:36
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 ...!
0
Rejoignez-nous