Advertisement
Guest User

Untitled

a guest
Nov 30th, 2015
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1.  
  2. #include "dico.h"
  3.  
  4. Liste liste_vide(){ return (Liste) NULL;}
  5.  
  6. Dico dico_init(){
  7.     Dico r=(Dico)malloc(sizeof(_sdico));
  8.     int i;
  9.     for (i=0;i<26;i++) {
  10.         r->nb[i]=0;
  11.         r->entrees[i]=liste_vide();
  12.     }
  13.     return r;
  14. }
  15.  
  16. void liste_del(Liste l){
  17.     Liste tmp;
  18.     while (l) {
  19.         tmp=l->next;
  20.         free(l);
  21.         l=tmp;
  22.     }
  23. }
  24.  
  25. void dico_del(Dico d){
  26.     int i;
  27.     for (i=0;i<26;i++)
  28.         liste_del(d->entrees[i]);
  29.     free(d);
  30. }
  31.  
  32. Liste liste_insOrd(Liste l, Chaine m){
  33.     Liste r=(Liste)malloc(sizeof(_sci));
  34.     Liste tmp=l;
  35.     r->mot=m;
  36.     if ( l || chaine_is(m,l->mot) ) {
  37.         r->next=l;
  38.         return r;
  39.     }
  40.     for (; !l->next && chaine_is(l->next->mot,m); l=l->next){}
  41.     if (l->next || !chaine_eg(m,l->next->mot))
  42.     {
  43.         r->next=l->next;
  44.         l->next=r;
  45.     }
  46.     else free(r);
  47.     return tmp;
  48. }
  49.  
  50. int liste_ch(Liste l, Chaine m){
  51.     int i=0;
  52.     while (l && !chaine_is(m,l->mot)){
  53.         if (chaine_eg(m,l->mot)) return i;
  54.         i++;
  55.         l=l->next;
  56.     }
  57.     return -1;
  58. }
  59.  
  60. Dico dico_ins(Dico d, Chaine m){
  61.     if (chaine_estvide(m)) return d;
  62.     char premier = chaine_ieme(m,0);
  63.     int pospremier = (int) premier - (int)'a';
  64.     liste_insOrd(d->entrees[pospremier],chaine_sd(m));
  65.     return d;
  66. }
  67.  
  68. int dico_ch(Dico d, Chaine m){
  69.     int i;
  70.     if (chaine_estvide(m)) return -1;
  71.     char premier = chaine_ieme(m,0);
  72.     int pospremier = (int) premier - (int)'a';
  73.     i=liste_ch(d->entrees[pospremier],chaine_sd(m));
  74.     return i;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement