Trie
#ifndef TRIE_VARIATION_H
#define TRIE_VARIATION_H
#ifdef __cplusplus extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif
#include
#include
#include
#define k 26 //tamanho do alfabeto
//PROTÓTIPOS DE FUNÇÕES void inserir_palavra(); int busca_palavra(); int remove_palavra(); void le_arquivo();
/* * Estrutura da Árvore Trie * flag [0] = 0 (ainda restam mais caracteres a serem buscados) | = 1 (nao ha mais letras) * flag [1] = 1 | fim de uma palavra (nao necessariamente a unica) */ struct node { struct node *v[k]; char flag[2];
} NoRegistro;
struct node *root = NULL; int i;
void le_arquivo(int argc, char** argv) { char linha[100], *palavra, limit[2] = " "; FILE *arquivo; int countArq = 1;
printf("\nargc: %d\n", argc);
if (argc < 2) { printf("\nErro: Digite o nome do arquivo !!!\n\n"); exit(1); }
// Lê todos os arquivos passados como parametro na chamada do programa while (countArq < argc) { printf("Contarg %d\n", countArq); if ((arquivo = fopen(argv[countArq], "r")) == NULL) { printf("Erro ao abrir arquivo!!!\n\n"); exit(1); }
printf("\n%s\n\n", argv[countArq]); //imprime o nome do arquivo
i = 0; while ((fgets(linha, 1000, arquivo)) != NULL) { printf("\nlinha: %s", linha); // Obtendo o primeiro token palavra = strtok(linha, limit); // Obtendo novas palavras while (palavra != NULL) { printf(" %s\n", palavra); //insercao inserir_palavra(root, palavra); palavra = strtok(NULL, limit);