Ce dépôt contient une collection de travaux pratiques et d'exercices en C++ couvrant les concepts fondamentaux et avancés des structures de données. Les programmes sont progressifs, du plus basique au plus complexe.
Exercices d'introduction à C++ et programmation structurée.
| Fichier | Concept |
|---|---|
01-somme.cpp |
Opérations de base et entrée/sortie |
02-permut.cpp |
Permutation et manipulation de variables |
03-utilisation_condition_if.cpp |
Structures conditionnelles |
04-afficher_nom.cpp |
Affichage et interaction utilisateur |
05-compter_caractere_sans_espace.cpp |
Manipulation de chaînes de caractères |
06-compter_voyelle.cpp |
Traitement de chaînes et conditions |
07-tableau_simple.cpp |
Tableaux unidimensionnels |
08-tableau_fusion.cpp |
Fusion de tableaux |
09-struct_etudiant.cpp |
Structures et vecteurs |
10-etudiant_fichier.cpp |
Gestion de fichiers et structures |
11-nbre_mystere.cpp |
Jeu interactif avec boucles |
Implémentation complète d'une liste chaînée simple avec opérations fondamentales.
Fichier: main.cpp
Fonctionnalités:
- ✅ Ajout en tête de liste
- ✅ Ajout en queue de liste
- ✅ Ajout à une position quelconque
- ✅ Suppression en tête
- ✅ Suppression en queue
- ✅ Suppression à une position quelconque
- ✅ Recherche d'un élément
- ✅ Affichage de la liste
- ✅ Calcul de la longueur
Structure:
struct Liste {
int elt; // L'élément
Liste* suivant; // Pointeur vers le nœud suivant
};Implémentation d'une liste chaînée doublement liée (bidirectionnelle).
Fichier: main.cpp
Caractéristiques:
- Navigation dans les deux sens (avant/arrière)
- Insertion et suppression efficaces
- Opérations complètes sur les listes doubles
Structure:
struct Liste {
int elt; // L'élément
Liste* suivant; // Pointeur vers le nœud suivant
Liste* precedent; // Pointeur vers le nœud précédent
};Implémentation complète d'une structure de pile avec opérations LIFO (Last In, First Out).
Fichier: main.cpp
Opérations:
- 📥 Empiler: Ajouter un élément au sommet
- 📤 Dépiler: Retirer un élément du sommet
- 👁️ Consulter: Voir l'élément au sommet
- 📊 Taille: Obtenir le nombre d'éléments
- 🔍 Vérification: Tester si la pile est vide
Structure:
struct Pile {
int elt; // L'élément
Pile* suivant; // Pointeur vers le nœud suivant
};Section réservée pour l'implémentation des arbres binaires.
Dossier réservé pour les fichiers de données ou fichiers d'entrée/sortie.
cl.exe /EHsc /Zi /Fe:programme.exe fichier.cppg++ -o programme.exe fichier.cppprogramme.exe- Ouvrir le fichier
.cpp - Utiliser la tâche de compilation intégrée :
Ctrl+Shift+B - Exécuter l'executable généré
| Concept | Fichiers |
|---|---|
| Variables et opérations | initalisation_c++/01-02 |
| Structures conditionnelles | initalisation_c++/03 |
| Chaînes de caractères | initalisation_c++/05-06 |
| Tableaux | initalisation_c++/07-08 |
| Structures (struct) | initalisation_c++/09-10 |
| Listes chaînées | liste_chaine_simple/, liste_chaine_double/ |
| Piles | piles/ |
| Arbres | arbres_binaires/ |
✓ Gestion de la mémoire - Allocation dynamique (new/delete)
✓ Pointeurs - Manipulation de références mémoire
✓ Structures de données - Concepts fondamentaux
✓ Récursion - Approche algorithmique
✓ Algorithmes - Insertion, suppression, recherche
✓ Bonnes pratiques - Code lisible et bien documenté
- Commencer par
initalisation_c++pour maîtriser les bases - Progresser vers
liste_chaine_simplepour comprendre les pointeurs - Approfondir avec
liste_chaine_doubleetpilespour les structures avancées - Terminer par les arbres binaires pour les concepts complexes
- Compilateur C++ : Visual Studio, MinGW, GCC, ou Clang
- Éditeur : VS Code recommandé
- Système : Windows, Linux, ou macOS
⚠️ Toujours libérer la mémoire allouée avecdelete⚠️ Vérifier les pointeurs null avant d'y accéder⚠️ Respecter l'ordre des opérations dans les structures chaînées⚠️ Tester avec des cas limites (listes vides, un seul élément, etc.)
Pour toute question ou clarification, consulter la documentation commentée dans les fichiers .cpp.
Année Académique: 2025-2026
Licence: Voir LICENSE