const int maxnode = 40000; const int sigma_size = 26; struct Trie { int ch[maxnode][sigma_size]; int val[maxnode]; int sz; //nombre de noeuds void clear() { sz = 1; memset(ch[0], 0, sizeof(ch[0])); } // initialisation int idx(char c) { return c - 'a'; } void insert(const char *s, int v) { int u = 0, n = strlen(s); for(int i = 0; i < n; i++) { int c = idx(s[i]); if(!ch[u][c]) { // il y'a pas de noeud correspondant memset(ch[sz], 0, sizeof(ch[sz])); val[sz] = 0; ch[u][c] = sz++; } u = ch[u][c]; } val[u] = v; } void find(char *s){ //TODO } }