Advertisement
Guest User

Untitled

a guest
May 27th, 2015
393
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.23 KB | None | 0 0
  1. int* pesquisa(trie* t, char** palavras, int nr_palavras, int* nr_resultados)
  2. {
  3.     if(t==NULL||palavras==NULL||nr_palavras<=0||nr_resultados==NULL)print_error("Null argument");
  4.     lista*lst_min,*lst_max;
  5.     if(nr_palavras>=2){
  6.         lst_min=lista_interseta(obtem_documentos(t,palavras[0]),obtem_documentos(t,palavras[1]),min_op);
  7.         lst_min=lista_interseta(obtem_documentos(t,palavras[0]),obtem_documentos(t,palavras[1]),max_op);
  8.     }
  9.     else
  10.         lst_min=lst_max=obtem_documentos(t,palavras[0]);
  11.     int i;
  12.     for(i=2;i<nr_palavras;i++){
  13.         lst_min=lista_interseta(lst_min,obtem_documentos(t,palavras[i]),min_op);
  14.         lst_max=lista_interseta(lst_max,obtem_documentos(t,palavras[i]),max_op);
  15.     }
  16.     elemento*p_min=lst_min->raiz,*p_max=lst_max->raiz;
  17.     lista*lst=lista_nova();
  18.     for(i=0;i<lista_tamanho(lst);i++){
  19.         lista_insere(lst,(p_min->ocorrencias+log(p_max->ocorrencias)),i,p_min->elem);
  20.         p_min=p_min->proximo;
  21.         p_max=p_max->proximo;
  22.     }
  23.     lista_ordena(lst);
  24.     elemento*p=lst->raiz;
  25.     for(i=0;i<lista_tamanho(lst);i++){
  26.         p->elem=-p->elem;
  27.         p=p->proximo;
  28.     }
  29.     lista_apaga(lst_min);
  30.     lista_apaga(lst_max);
  31.     int*vetor=(int*)malloc(sizeof(int)+lista_tamanho(lst));
  32.     p=lst->raiz;
  33.     for(i=0;i<lst->tamanho;i++){
  34.         vetor[i]=p->elem;
  35.     }
  36.     return vetor;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement