Untitled
unknown
plain_text
8 months ago
3.0 kB
17
Indexable
#include <iostream>
using namespace std;
struct Noeud {
int valeur;
int position;
Noeud* suivant;
};
void ajouterDebut(Noeud*& tete, int valeur){
Noeud* nouveauNoeud = new Noeud;
nouveauNoeud->valeur = valeur;
if (!tete){
nouveauNoeud->position = 0;
} else {
nouveauNoeud->position = (tete->position)+1;
}
nouveauNoeud->suivant = tete; // tete au debut = nullptr
tete = nouveauNoeud;
cout << "Ajoute noeud" << endl;
}
void ajouterFin(Noeud*& tete, int valeur){
Noeud* nouveauNoeud = new Noeud;
nouveauNoeud->valeur = valeur;
nouveauNoeud->position = 0;
if (!tete) {
tete = nouveauNoeud;
} else {
Noeud* courant = tete;
while(courant->suivant != nullptr) {
courant = courant->suivant;
}
nouveauNoeud->position = (courant->position)+1;
courant->suivant = nouveauNoeud;
}
cout << "Ajoute a la fin" << endl;
}
void afficherP(Noeud* tete, int position){
Noeud courant = *tete;
do {
if (courant.position == position){
cout << "Noeud:{valeur="<< courant.valeur << ",position="<< courant.position << "}" << endl ;
return;
}
courant = *courant.suivant;
} while (courant.suivant != nullptr);
if (courant.position == position){
cout << "Noeud:{valeur="<< courant.valeur << ",position="<< courant.position << "}" << endl ;
} else {
cout << "Il n'existe pas" << endl;
}
}
void afficherListe(Noeud* tete){
Noeud courant = *tete;
while(courant.suivant != nullptr) {
cout << "Noeud:{valeur="<< courant.valeur << ",position="<< courant.position << "}" << endl ;
courant = *courant.suivant;
}
cout << "Noeud:{valeur="<< courant.valeur << ",position="<< courant.position << "}" << endl ;
}
void libererP(Noeud*& tete, int position){
//liberer la tete
if(position == 0){
Noeud* tmp = tete;
tete = tete->suivant;
delete tmp;
cout << "libere " << position << endl;
return;
} else {
//liberer quelque position
Noeud *courant = tete;
while(courant->suivant != nullptr){
if (courant->suivant->position == position){
Noeud* tmp = courant->suivant;
courant->suivant = courant->suivant->suivant;
delete tmp;
cout << "libere " << position << endl;
return;
} else {
courant = courant->suivant;
}
}
}
}
int main(){
Noeud* tete1 = nullptr;
ajouterDebut(tete1, 10);
ajouterDebut(tete1, 20);
ajouterDebut(tete1, 30);
ajouterDebut(tete1, 40);
Noeud* tete2 = nullptr;
ajouterFin(tete2, 10);
ajouterFin(tete2, 20);
ajouterFin(tete2, 30);
ajouterFin(tete2, 40);
afficherListe(tete2);
libererP(tete2,3);
afficherListe(tete2);
Noeud noeud1; // Pile (Stack)
noeud1.valeur = 10;
noeud1.position = 0;
noeud1.suivant = nullptr;
Noeud* noeud2 = new Noeud; // Tas (Heap)
noeud2->valeur = 20;
noeud2->position = 1;
noeud2->suivant = nullptr;
cout << "Valeur : " << noeud1.valeur << endl;
cout << "Position : " << noeud1.position << endl;
cout << "Valeur : " << noeud2->valeur << endl;
cout << "Position : " << noeud2->position << endl;
}Editor is loading...
Leave a Comment