#include <iostream>
struct noeud {
int val;
noeud* suivant;
};
typedef noeud* ListeCerculaire;
void insererListeVide(ListeCerculaire& dernier, int donnee) {
if (dernier)
return;
ListeCerculaire nouvau = new noeud;
nouvau->val = donnee;
dernier = nouvau;
nouvau->suivant = dernier;
}
void insererDebutListe(ListeCerculaire& dernier, int donnee) {
if (dernier == NULL)
insererListeVide(dernier, donnee);
ListeCerculaire nouvau = new noeud;
nouvau->val = donnee;
nouvau->suivant = dernier->suivant;
dernier->suivant = nouvau;
}
void insererFinListe(ListeCerculaire& dernier, int donnee) {
if (dernier == NULL)
insererListeVide(dernier, donnee);
ListeCerculaire nouvau = new noeud;
nouvau->val = donnee;
nouvau->suivant = dernier->suivant;
dernier->suivant = nouvau;
dernier = nouvau;
}
void insererApresElem(ListeCerculaire& dernier, int donnee, int elem) {
if (dernier == NULL)
return;
ListeCerculaire p = new noeud;
p = dernier->suivant;
do {
if (p->val == elem) {
insererDebutListe(p, donnee);
break;
}
else {
p = p->suivant;
}
} while (p != dernier->suivant);
}
void afficherListe(ListeCerculaire dernier) {
ListeCerculaire p = new noeud;
p = dernier->suivant;
if (dernier) {
do {
std::cout << p->val << std::endl;
p = p->suivant;
} while (p != dernier->suivant);
}
}
void supprimerElemListe(ListeCerculaire& dernier, int elem) {
if (dernier) {
if (dernier->suivant == dernier) {
delete dernier;
dernier = NULL;
return;
}
ListeCerculaire p = new noeud;
ListeCerculaire prec = new noeud;
p = dernier->suivant;
prec = dernier;
do {
p = p->suivant;
prec = prec->suivant;
} while ((p != dernier->suivant)&&(p->val!=elem));
if (p->val == elem) {
prec->suivant = p->suivant;
delete p;
}
}
}
int main()
{
std::cout << "Hello World!\n";
}