Trie.cpp 631 B

12345678910111213141516171819202122232425
  1. const int maxnode = 40000;
  2. const int sigma_size = 26;
  3. struct Trie {
  4. int ch[maxnode][sigma_size];
  5. int val[maxnode];
  6. int sz; //nombre de noeuds
  7. void clear() { sz = 1; memset(ch[0], 0, sizeof(ch[0])); } // initialisation
  8. int idx(char c) { return c - 'a'; }
  9. void insert(const char *s, int v) {
  10. int u = 0, n = strlen(s);
  11. for(int i = 0; i < n; i++) {
  12. int c = idx(s[i]);
  13. if(!ch[u][c]) { // il y'a pas de noeud correspondant
  14. memset(ch[sz], 0, sizeof(ch[sz]));
  15. val[sz] = 0;
  16. ch[u][c] = sz++;
  17. }
  18. u = ch[u][c];
  19. }
  20. val[u] = v;
  21. }
  22. void find(char *s){
  23. //TODO
  24. }
  25. }