La liste chaînée, exemple avec tri

Description

mon premier source sur ce site..
cree une liste chaînée et la tri

Source / Exemple :


#include <iostream>
using namespace std ; // ca c poour dev c++ sinon on met a la place de ces 2 lignes juste #include <iostream.h>

class liste // notre liste chaînée
{
  public:
   int n;  //donnée 
   int r;  //rang 
   liste *psuiv;  //pointeur suivant
};  
liste *pini=0; // pointeur initial
void creation(int i)
{
  if(pini==0) // si on cree le premier element
  {
    pini=new liste() ; //on alloue de l'espace , on cree l'objet en fait
    pini->n=i ; //on y met notre chiffre
    pini->r=0; // rang=0
    pini->psuiv=0; //ponteur suivant=0
  }
  else //si on cree un element qqconque
  {
    liste *p1=new liste();liste *p2=new liste();
    int r=0;
    p1=pini;
    while(p1) // on passe d'un element au suivant jusqu'a ce que on tombe sur le dernier element qui a pour pointeur suivant 0
    {
      p2=p1;
      p1=p1->psuiv;
      r++; // on augmente le rang a chaque fois
    }
    p2->psuiv=new liste(); // on lui alloue de l'espace, on cree l'objet 
    p2->psuiv->n=i ; //...
    p2->psuiv->r=r; //..
    p2->psuiv->psuiv=0; 
  }  
}
void affich() // affiche toute la liste
{
  liste *p1=new liste();
  cout <<"\n{";
  p1=pini;
  for(;;) // boucle infini
  {
    cout << p1->n; // on affiche l'element
    p1=p1->psuiv; // on passe au suivant
    if(p1==0) // si c'est le dernier on ferme l'accolade et on se casse
    {
      cout << "}" ;
      return;
    }
    cout << ";";
  }  
}
void affich(int i) // affiche un element particulier : l'element n°i
{
  liste *p1=new liste();
  p1=pini;
  while(p1->r!= i){p1=p1->psuiv;} //
  cout <<"\nliste["<<i<<"]="<< p1->n;
  return; 
} 
void tri() //tri de la liste 
{
  liste *p1=new liste(); liste *p2=new liste();
  int n;
  cout << "\ntri de la liste...";
  int verif=1;
  while(verif) // tant que verif est !=0 cad tant la procedure de tri fonctionne cad tant que le tri n'est pas terminé on tri 
  {
    verif=0;
    for(p2=pini;   p2->psuiv ; p2=p2->psuiv ) // la boucle s'execute jusqu'a ce que p2 pointe le dernier element ( cad que p2->psuiv==0)
    {    
      p1=p2;
      while(p1->psuiv and p1->n <(p1->psuiv)->n) // tant que p1 n'est pas le dernier element et que p1 pointe un objet plus petit que l'objet suivant ...
      {                                           
        n=p1->n ;               // on decale p1  ...                   
        p1->n=(p1->psuiv)->n;   // on met ce qui a dans p1 dans l'element suivant cad p1->psuiv et ce qui a dans p1->psuiv on le met dans p1                  
        (p1->psuiv)->n=n;                          
        p1=p1->psuiv;                              
        verif++;
      }
    }
  }     
  return ;   
} 

int main(void) 
{
  
  int j ;
  
  j=rand(); // chiffre aleatoire le probleme c'est qu'en fait y file systematiquement les
            //memes chiffres pour regler le prbleme il faudrait mettre avant randomize(); mais ca marche pas avec dev c++
            //si qqun a une soluce, ... 
    
  int h;
  cout << "creation de la liste...";
  for(int i=0;i<j;i++)
  {
  h=rand();
  creation(h);  
  }
 //sinon si vous voulez que ce soit l'utilisateur qui cree la liste alors mettez ca : 
 /*int h 
    while(h!=-999)
    {
     cout << "\nentrez un chiffre (entrez -999 pour quiter) ... \n" ; 
     cin >> h ; 
     creation(h) ; 
     } */
  affich(); 
  tri();
  affich();
  cout << "\nafficher quel element de la liste? " ;
  cin >> h ; 
  affich(h);
  cout << "\nthe end!\n" ;  
  system("PAUSE");
  return 0;
}

Conclusion :


cette source marche farpaitement sous dev-c++, je sais pas pour borland ou visualc++

je cherche comment on affiche un bmp dans un fenetre avec dev-c++ si qqun peut m'aider ce serait sympa

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (roomsmush)