Arvore
#include
#include
/*
Programa para manipula��o de um arquivo (Modo BINARIO), contendo dados de um dicion�rio de palavras e criando uma arvore bin�ria para a manipula��o de palavras e significados correspondentes.
*/
FILE *arquivo;
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 �rvore respeitando o crit�rio EM ORDEM void inOrder (ARV a)
{
if (! EMPTY(a) ) { inOrder(a->esq); printf("\n%s: %s, %s ", a->e.palavra,a->e.cg,a->e.def); inOrder(a->dir); }
}
//Fun��o para buscar uma palavra na �rvore
ARV busca (char termo[], ARV a)
{
ARV b; b = a; while (!EMPTY(b)){ if (strcmp(b->e.palavra, termo) == 0) return b; else if (strcmp(b->e.palavra,termo) > 0) b = b->esq; else b = b->dir; } return NULL;
}
//Fun��o para inser��o de novos vocabulos