Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "dico.h"
- Liste liste_vide(){ return (Liste) NULL;}
- Dico dico_init(){
- Dico r=(Dico)malloc(sizeof(_sdico));
- int i;
- for (i=0;i<26;i++) {
- r->nb[i]=0;
- r->entrees[i]=liste_vide();
- }
- return r;
- }
- void liste_del(Liste l){
- Liste tmp;
- while (l) {
- tmp=l->next;
- free(l);
- l=tmp;
- }
- }
- void dico_del(Dico d){
- int i;
- for (i=0;i<26;i++)
- liste_del(d->entrees[i]);
- free(d);
- }
- Liste liste_insOrd(Liste l, Chaine m){
- Liste r=(Liste)malloc(sizeof(_sci));
- Liste tmp=l;
- r->mot=m;
- if ( l || chaine_is(m,l->mot) ) {
- r->next=l;
- return r;
- }
- for (; !l->next && chaine_is(l->next->mot,m); l=l->next){}
- if (l->next || !chaine_eg(m,l->next->mot))
- {
- r->next=l->next;
- l->next=r;
- }
- else free(r);
- return tmp;
- }
- int liste_ch(Liste l, Chaine m){
- int i=0;
- while (l && !chaine_is(m,l->mot)){
- if (chaine_eg(m,l->mot)) return i;
- i++;
- l=l->next;
- }
- return -1;
- }
- Dico dico_ins(Dico d, Chaine m){
- if (chaine_estvide(m)) return d;
- char premier = chaine_ieme(m,0);
- int pospremier = (int) premier - (int)'a';
- liste_insOrd(d->entrees[pospremier],chaine_sd(m));
- return d;
- }
- int dico_ch(Dico d, Chaine m){
- int i;
- if (chaine_estvide(m)) return -1;
- char premier = chaine_ieme(m,0);
- int pospremier = (int) premier - (int)'a';
- i=liste_ch(d->entrees[pospremier],chaine_sd(m));
- return i;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement