Soyez le premier à donner votre avis sur cette source.
Snippet vu 7 105 fois - Téléchargée 35 fois
#include <iostream.h> #include <stdio.h> struct Element { int valeur; Element* suivant; }; Element* liste = NULL; void Ajouter(int valeur) { Element* element= new Element; // On fixe la valeur de l'élément element->valeur = valeur; // Comme on place le nouvel élément en début // de liste, on dit que son suivant est le // premier élément de la liste. element->suivant = liste; // Puis on remet à jour le pointeur vers le // premier élément de la liste, qui est notre // nouvel élément. liste = element; } Element* Rechercher(int valeur) { Element* element = liste; // La méthode de recherche est simple : // On se place en première position, et tant // qu'il y a des éléments suivants, on suit // les flèches, jusqu'à ce qu'on trouve un // élément de liste qui contienne la valeur // recherchée. while(element != NULL && element->valeur != valeur) element = element->suivant; // Ici, on renvoie une information pertinente : // - ou bien on a trouvé quelque chose, auquel // cas on renvoie ce quelque chose, // - ou bien on n'a rien trouvé et element vaut // NULL, qui est la valeur qui indique qu'un élément // n'a pas été trouvé. return element; } void Supprimer(Element* element) { Element* precedent = liste; // Si l'élément à supprimer est le premier de // la liste, alors le travail est vite fait. if(element == liste) { liste = NULL; delete element; return; } // Sinon, il faut rechercher l'élément précédent, // et détourner le pointeur de ce précédent pour // pointer vers l'élément suivant celui à supprimer. // Ainsi, il ne se trouve plus dans la liste. while(precedent != NULL && precedent->suivant != element) precedent = precedent->suivant; if(precedent == NULL) return; precedent->suivant = element->suivant; delete element; } void Afficher() { Element* element = liste; while(element != NULL) { cout << element->valeur << "\t"; element = element->suivant; } cout << endl; } int main(void) { Element* e; Ajouter(10); Ajouter(5); Ajouter(13); Ajouter(7); Afficher(); e = Rechercher(5); Supprimer(e); Afficher(); return 0; fflush (stdin); getchar(); }
2-"Ce serait 10 fois mieux si tu ne mélangerais pas C et C++ " : comme disait le créateur du C++: on n'a pas le droit d'imposer sa philosophie (Orienté objet ou fonctionnel) et c'est le charme du C++
Sinon, c'est une remarque intéressantes, et je vais le refaire comme ca alors ...
Pour cela tu créer une classe template (autant faire du réutilisable sans ce fatiguer) liste et une autres classe template noeud. La classe liste permettera de gérer plusieurs liste chaînée contrairement à ton bricolage de créer une variable globale de type ELEMENT qui est le debut. La classe liste contient un pointeur vers le premier élément de la liste et la classe noeud fonctionne comme ta structure element.
voilà j'espère que je t'aurai aidé
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.