programa em c
#include
#include
/*
Programa para manipulação de um arquivo (Modo TEXTO), contendo dados de um dicionário de palavras e criando uma arvore binária para a manipulação de palavras e significados correspondentes.
O arquivo deve estar no formato a seguir: (no programa usamos dic.txt)
----------------------
gato#sm#bicho do mato# cao#sm#bicho domestico# leao#sm#bicho da selva# canguru#sm#bicho que pula# foca#sf#bicho da agua#%
------------------------
*/
typedef struct vocabulo{ char palavra[40]; char cg[10]; char def[100];
}VOCAB;
typedef struct nodo{ VOCAB e; struct nodo *esq; struct nodo *dir;
} NO; typedef NO *ARV;
// Função para criar uma nova arvore
ARV nova_arv()
{
return NULL;
}
int EMPTY (ARV a)
{ return (a == NULL);}
// Função para inserir um novo elemento 'b' na arvore 'a'
ARV insere (ARV a, VOCAB b)
{ ARV nova; if (EMPTY(a)) { nova = (ARV) malloc (sizeof(NO)); nova->esq = NULL; nova->dir = NULL; nova->e = b; return nova; } else { if ( strcmp(a->e.palavra,b.palavra) < 0 ) a->dir = insere(a->dir, b); else a->esq = insere(a->esq, b); /* Repeticoes sao inseridas na esquerda! */ return a; }
}
// Função para procurar um elemento numa arvore
ARV procura (ARV a , char *b)
{
VOCAB c; if (EMPTY(a)) return NULL; else if ( strcmp(a->e.palavra,b) == 0 ) return a; else if ( strcmp(a->e.palavra,b) < 0 ) return procura (a->dir, b); else return procura (a->esq, b);
}
//Função para percorrer a arvore binária com critério pre-ordem void preorder (ARV a)
{
if (! EMPTY(a) ) { printf("%s ",a->e.palavra); preorder(a->esq); preorder(a->dir); }
}
//Função para percorrer a arvore binária com critério em-ordem