- /*fichier list2.h il doit etre enregistre avec ce nom ds le même dossier que le fihier principal sinon proceder au changement */
- struct cellule
- {
- int val;
- cellule *suiv;
- };
- typedef cellule* liste;
-
- class listechainee
- {
- private: liste cell;
-
-
- public: listechainee();
- void ajouterdebut(int);
- void affichage() const;
- void milieu(int rang, int n);
- void ajouter(int n);
- listechainee(listechainee &);
- ~listechainee(); // le destructeur
-
- };
-
- listechainee::listechainee()
-
- {
-
- cell=new cellule;
- cell=NULL;
- }
-
-
- void listechainee::ajouterdebut(int n)
- {
- liste element;
- element=new cellule;
- element->val=n;
- element->suiv=cell;
- cell=element;
- }
-
- void listechainee::affichage() const
- {
- liste p;
- p=cell;
- while(p!=NULL)
- {
- cout<<p->val<<endl;
- p=p->suiv;
- }
- }
-
- //milieu
- void listechainee::milieu(int rang, int n)
- {
- int i;
- liste element,temp;
- temp=cell;
- for (i=1;i<rang-1;i++)
- {
- temp=temp->suiv;
- if(temp->suiv==NULL)
- break;
- }
- if(rang<=1)
- listechainee::ajouterdebut(n);
- else if(temp->suiv==NULL)
- listechainee::ajouter(n);
- else
- {
- element=new cellule;
- element->val=n;
- element->suiv=temp->suiv;
- temp->suiv=element;
- }
- }
-
- //ajouter
- void listechainee::ajouter(int n)
- {
- liste element,temp;
- element=new cellule;
- element->val=n;
- element->suiv=NULL;
- temp=cell;
- if (temp==NULL)
- cell=element;
- else
- {
- while(temp->suiv!=NULL)
- {
-
- temp=temp->suiv;
- }
- temp->suiv=element;
- }
-
- }
-
- listechainee::~listechainee() //implementation du destructeur
- {
- if(cell!=NULL)
- {
- liste temp,prec;
- temp=cell;
- while(temp!=NULL)
- {
- prec=temp;
- temp=temp->suiv;
- delete prec;
- }
-
- }
- }
-
- listechainee::listechainee(listechainee & chaine)
- {
- liste copie_liste=chaine.cell,temp,element,debut;
- element=new cellule;
- debut=element;
- if(copie_liste==NULL)
- {
-
- element=NULL;
- cell=element;
- }
- else
- {
- temp=element;
- element->val=copie_liste->val;
- element->suiv=NULL;
- temp->suiv=element;
- copie_liste=copie_liste->suiv;
- while(copie_liste!=NULL)
- {
- element=new cellule;
- element->val=copie_liste->val;
- element->suiv=NULL;
- temp->suiv=element;
- temp=element;
- copie_liste=copie_liste->suiv;
- }
- cell=debut;
- }
- }
-
- /*&&&&&&&&&&&&&*fichier principal&&&&&&&&&&&&&&&&&&&*/
- #include<iostream.h>
- #include"liste2.h"
- void main()
- {
-
-
- int i=1,r,val;
-
- listechainee liste1;
- cout<<"saisir la liste1 par des entiers"<<endl;
- while(i!=0)
- {
- cout<<"donner une valeur";
- cin>>val;
- liste1.ajouter(val);
- cout<<"taper 0 pour sortir";
- cin>>i;
- }
- liste1.affichage();
- cout<<"donner le rang de la liste1 ou vous voulez inserer un element";
- cin>>r;
- cout<<"donner une valeur";
- cin>>val;
- liste1.milieu(r,val);
- liste1.affichage();
- cout<<"\\ncopie de la liste 1 dans la liste2"<<endl;
- listechainee liste2=liste1;
- liste2.affichage();
- cout<<"donner le rang de la liste2 ou vous voulez inserer un element";
- cin>>r;
- cout<<"donner une valeur";
- cin>>val;
- liste2.milieu(r,val);
- cout<<"afichage de la liste2"<<endl;
- liste2.affichage();
- cout<<"\\nle changement n'a pas affecter la liste1"<<endl;
- liste1.affichage();
- }
/*fichier list2.h il doit etre enregistre avec ce nom ds le même dossier que le fihier principal sinon proceder au changement */
struct cellule
{
int val;
cellule *suiv;
};
typedef cellule* liste;
class listechainee
{
private: liste cell;
public: listechainee();
void ajouterdebut(int);
void affichage() const;
void milieu(int rang, int n);
void ajouter(int n);
listechainee(listechainee &);
~listechainee(); // le destructeur
};
listechainee::listechainee()
{
cell=new cellule;
cell=NULL;
}
void listechainee::ajouterdebut(int n)
{
liste element;
element=new cellule;
element->val=n;
element->suiv=cell;
cell=element;
}
void listechainee::affichage() const
{
liste p;
p=cell;
while(p!=NULL)
{
cout<<p->val<<endl;
p=p->suiv;
}
}
//milieu
void listechainee::milieu(int rang, int n)
{
int i;
liste element,temp;
temp=cell;
for (i=1;i<rang-1;i++)
{
temp=temp->suiv;
if(temp->suiv==NULL)
break;
}
if(rang<=1)
listechainee::ajouterdebut(n);
else if(temp->suiv==NULL)
listechainee::ajouter(n);
else
{
element=new cellule;
element->val=n;
element->suiv=temp->suiv;
temp->suiv=element;
}
}
//ajouter
void listechainee::ajouter(int n)
{
liste element,temp;
element=new cellule;
element->val=n;
element->suiv=NULL;
temp=cell;
if (temp==NULL)
cell=element;
else
{
while(temp->suiv!=NULL)
{
temp=temp->suiv;
}
temp->suiv=element;
}
}
listechainee::~listechainee() //implementation du destructeur
{
if(cell!=NULL)
{
liste temp,prec;
temp=cell;
while(temp!=NULL)
{
prec=temp;
temp=temp->suiv;
delete prec;
}
}
}
listechainee::listechainee(listechainee & chaine)
{
liste copie_liste=chaine.cell,temp,element,debut;
element=new cellule;
debut=element;
if(copie_liste==NULL)
{
element=NULL;
cell=element;
}
else
{
temp=element;
element->val=copie_liste->val;
element->suiv=NULL;
temp->suiv=element;
copie_liste=copie_liste->suiv;
while(copie_liste!=NULL)
{
element=new cellule;
element->val=copie_liste->val;
element->suiv=NULL;
temp->suiv=element;
temp=element;
copie_liste=copie_liste->suiv;
}
cell=debut;
}
}
/*&&&&&&&&&&&&&*fichier principal&&&&&&&&&&&&&&&&&&&*/
#include<iostream.h>
#include"liste2.h"
void main()
{
int i=1,r,val;
listechainee liste1;
cout<<"saisir la liste1 par des entiers"<<endl;
while(i!=0)
{
cout<<"donner une valeur";
cin>>val;
liste1.ajouter(val);
cout<<"taper 0 pour sortir";
cin>>i;
}
liste1.affichage();
cout<<"donner le rang de la liste1 ou vous voulez inserer un element";
cin>>r;
cout<<"donner une valeur";
cin>>val;
liste1.milieu(r,val);
liste1.affichage();
cout<<"\\ncopie de la liste 1 dans la liste2"<<endl;
listechainee liste2=liste1;
liste2.affichage();
cout<<"donner le rang de la liste2 ou vous voulez inserer un element";
cin>>r;
cout<<"donner une valeur";
cin>>val;
liste2.milieu(r,val);
cout<<"afichage de la liste2"<<endl;
liste2.affichage();
cout<<"\\nle changement n'a pas affecter la liste1"<<endl;
liste1.affichage();
}