Untitled
unknown
plain_text
11 days ago
3.0 kB
16
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