Je veux un petite application console qui consiste à placer des nombres dans une liste chaînée
Il faut que je les places en ordre croissant.
Je demande un nombre à l'écran et je dois le supprimer si il existe.
Quelqu'un peut m'aider
Merci
Je veux un petite application console qui consiste à placer des nombres dans une liste chaînée
Il faut que je les places en ordre croissant.
Je demande un nombre à l'écran et je dois le supprimer si il existe.
Quelqu'un peut m'aider
Merci
Renseigne-toi sur std::list et sur les algorithmes de la STL. Tu devrais avoir tout ce dont tu as besoin.
Cours : Initiation à CMake
Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
Ce message a été tapé avec un clavier en disposition bépo.
C'est ou je peux trouvé ça ?
Cours : Initiation à CMake
Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
Ce message a été tapé avec un clavier en disposition bépo.
J'avais débuté un peux.
Comment je peux faire pour entrer le chiffre dans la console à supprimer et mettre cela en ordre croissant.
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 #include <cstdlib> #include <iostream> using namespace std; struct Element { int valeur; Element* suivant; }; Element* liste = NULL; void Ajouter(int valeur) { Element* element= new Element; element->valeur = valeur; element->suivant = liste; liste = element; } Element* Rechercher(int valeur) { Element* element = liste; while(element != NULL && element->valeur != valeur) element = element->suivant; return element; } void Supprimer(Element* element) { Element* precedent = liste; if(element == liste) { liste = NULL; delete element; return; } 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(1); Ajouter(2); Ajouter(3); Ajouter(4); Ajouter(5); Afficher(); e = Rechercher(5); Supprimer(e); Afficher(); system("pause"); return 0; }
La bibliothèque standard du C++ comprend déjà une implémentation de liste chaînée (std::list), qui te permet de ne pas avoir à recopier tout le code que tu nous montres là à chaque fois que tu veux utiliser une liste chaînée dans un de tes programmes.
Entraîne-toi à utiliser std::list, tu verras, c'est très pratique.
Enfin, pour trier ta liste, tu pourras utiliser un des algorithmes de la STL. Là, c'est un peu plus compliqué… mais c'est comme ça qu'on fait du joli code C++ !
Cours : Initiation à CMake
Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
Ce message a été tapé avec un clavier en disposition bépo.
Tu peux me guidé ?
Bien sûr que je peux. Le forum est là pour ça !
Mais il faut aussi que tu y mettes du tiens. As-tu cherché un cours sur les conteneurs de la STL (std::list, std::vector, etc.) ?
Cours : Initiation à CMake
Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
Ce message a été tapé avec un clavier en disposition bépo.
L'aide sur developpez.com:
FAQ STL
Tutoriel sur la STL
Algos de tri de la STL
Cours C++ (partie STL)
Ailleurs:
STL
CPP reference
Avec ça tu devrais trouver ton bonheur.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Pour commencer
créer ton conteneur d'entier : std::list<int>
Ta fonction Ajout : push_back()
Ta fonction Rechercher : find()
Ta fonction Supprimer : remove()
Ta fonction Afficher va s'appuyer sur les iterator de list (cf : begin() et end())
Montres nous ce que tu as fait, et nous t'aiderons.
--
Jérémie
ce serait pas un exercice de cours? et genre en C et non en C++?
Es tu sur de vouloir une std::list ?
La première chose à faire dans ton cas est de choisir le bon container de la STL.
Pour t'aider regarde ce diagramme.
Tu veux que tes éléments soient trié à l'insertion, un std::set (plutôt qu'une liste) peut être intéressant dans ce cas (surtout que tu veut faire des suppressions).
Et pour apprendre à t'en servir regarde les liens cités plus haut.
Un exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 #include <set> #include <iostream> using namespace std; void main() { set<int> ma_liste; //par défaut trié par ordre croissant //pour un ordre décroissant : set<int,greater<int> > ma_liste.insert(1); ma_liste.insert(8); ma_liste.insert(5); ma_liste.insert(3); set<int>::const_iterator it; for(it=ma_liste.begin();it!=ma_liste.end();++it) { cout<<*it<<endl; } /* résultat: 1 3 5 8 */ //la suppression n'est pas plus difficile }
Partager