Busca binaria de palavras

1. Busca binaria de palavras

erika
ericio

(usa Puppy Linux)

Enviado em 08/07/2011 - 20:52h

Como que eu faço para, ao invés de inserir inteiros no dicionario, inserir várias
palavras de tamanho até 16. E pesquisá-las por busca binária.
Eu fiz para inteiros, mas não sei como fazer para char.

#define Maxn 10

typedef long TipoChave;

typedef struct Registro {
TipoChave Chave;
/* outros componentes */
} Registro;

typedef int Indice;

typedef struct Tabela {
Registro Item[Maxn + 1];
Indice n;
} Tabela;

void Inicializa(Tabela *T)
{ T->n = 0;
}

void Insere(Registro Reg, Tabela *T)
{ if (T->n == Maxn)
printf("Erro : tabela cheia\n");
else
{ T->n++;
T->Item[T->n] = Reg;
}
}

Indice Binaria(TipoChave x, Tabela *T)
{ Indice i, Esq, Dir;
if (T->n == 0)
return 0;
else
{ Esq = 1;
Dir = T->n;
do
{ i = (Esq + Dir) / 2;
if (x > T->Item[i].Chave)
Esq = i + 1;
else
Dir = i - 1;
} while (x != T->Item[i].Chave && Esq <= Dir);
if (x == T->Item[i].Chave)
return i;
else
return 0;
}
}


int main(int argc, char *argv[])

{
Tabela T;
Registro reg;
TipoChave vetor[Maxn+1];
Indice pos;
int i;

Inicializa(&T);

/* Insere as chaves ordenas tabela */
for (i = 1; i <= Maxn; i++)
{ vetor[i] = i;
reg.Chave = vetor[i];
Insere(reg, &T);
printf("Inseriu: %ld\n", vetor[i]);
}

/* Pesquisa Binaria em cada chave */
printf("Pesquisa Binaria (chaves ordenadas)\n");
for (i = 1; i <= Maxn; i++) {
pos = Binaria(i, &T);
if (pos == 0)
{ printf("Pesquisa Falhou\n");
return 0;
}
printf("Registro %d na posicao: %d\n", i, pos);
}

return 0;
}


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts