Structures de données fondamentales : sac, file d'attente et pile
Structures de données de collection
De nombreux types de données fondamentaux reposent sur la gestion d'une collection d'objets. La valeur du type est un ensemble d'objets, et les opérations consistent à ajouter, supprimer ou accéder à ces objets. Nous examinerons trois structures de données de ce type : le Sac (Bag), la File d'attente (Queue) ...
Publié le 16 juin à 16h24
数据结构解析:深入理解链表的工作原理
Table des matières
Introduction
1.1 Définition d'une liste chaînée
1.2 Analyse comparative entre listes chaînées et tableaux
Première partie : Concepts fondamentaux des listes chaînées
1.3 Structure des nœuds
1.4 Typologie des listes chaînées
Deuxième partie : Opérations et caractéristiques des listes chaînées
2.1 Création et destruction d'une ...
Publié le 16 juin à 02h38
Algorithmes de la Bibliothèque Standard C++
Ces algorithmes ne changent pas les éléments des conteneurs sur lesquels ils opèrent.
1.1 Recherche d'éléments
find(begin, end, value) : Recherche le premier élément égal à value et renvoie un itérateur (ou end si non trouvé).
find_if(begin, end, predicate) : Recherche le premier élément satisfaisant le prédicat.
find_end(begin, end, sub_begin ...
Publié le 16 juin à 00h44
Utilisation des algorithmes STL en C++ pour la manipulation de conteneurs
La bibliothèque standard C++ (STL) fournit un riche ensemble d'algorithmes pour la manipulation efficace des conteneurs. Ces algorithmes sont classés en plusieurs catégories en fonction de leur comportement : ceux qui ne modifient pas les séquences, ceux qui les modifient, les algorithmes de tri, les algorithmes de tas, les algorithmes de reche ...
Publié le 15 juin à 04h04
Pratique d'algorithmes pour listes chaînées : Suppression, conception et inversion de nœuds
Suppression d'éléments dans une liste chaînée
Problème : Étant donné la tête d'une liste chaînée et une valeur entière, supprimer tous les nœuds où la valeur du nœud est égale à la valeur donnée et retourner la nouvelle tête.
Approche : Utiliser un nœud factice (dummy node) pour simplifier la manipulation, en particulier pour la suppression du ...
Publié le 14 juin à 22h37
Journal de résolution d'exercices algorithmiques
11.23
LG14362 [CSP-S2025] Route
Un ajout important : pour un graphe donné, après avoir calculé son arbre couvrant minimum (MST), si l'on ajoute d'autres arêtes pour former un nouveau graphe, le MST du nouveau graphe n'utilisera jamais les arêtes non-arbres de l'ancien graphe.
LG14394/LOJ2729 [JOISC 2016] Poupée gigogne
Analyse
Le problème sembl ...
Publié le 14 juin à 03h02
Principes des Structures de Données et Algorithmes
Structures de Données
1.1. Tableau Dynamique
Caractéristiques d'un Tableau
Stockage : Éléments contigus en mémoire.
Avantages : Accès rapide aux éléments par index, recherches efficaces (si l'index est connu).
Inconvénients : L'insertion ou la suppression d'éléments est coûteuse, car elle nécessite le décalage des éléments suivants.
Straté ...
Publié le 13 juin à 23h13
Implémentations algorithmiques fondamentales en C
Cet article présente plusieurs implémentations courantes d'algorithmes et de structures de données en langage C, souvent rencontrées dans des examens de programmation.
Addition de grands entiers
#include <stdio.h>
#include <string.h>
#define MAX_TAILLE 20
void inverser_chaine(char *chaine) {
int debut = 0, fin = strlen(chaine) ...
Publié le 13 juin à 21h42
Comparer les Numéros de Version en C++
Dans ce problème d'algorithmique, nous devons comparer deux chaînes de caractères représentent des numéros de version. Le point (.) sert de séparateur entre les segments numériques, et non de séparateur décimal. Par exemple, "2.5" indique la cinquième révision du second niveau de la seconde révision principale, et non une valeur décim ...
Publié le 13 juin à 21h15
Préparation aux concours de programmation CSP-S et NOIP 2025
Script de test automatisé
Pour valider une solution, on peut utilisre un script qui génère des données, exécute une solution standard et la solution proposée, puis compare les sorties. Voici une version réécrite en C++ :
#include<iostream>
#include<cstdlib>
#include<string>
int main() {
std::ios::sync_with_stdio(false);
...
Publié le 13 juin à 02h59