Indice denso
#include
#include
typedef struct car
{
int codigo; char placa[30]; char modelo[30]; int ano;
}car;
typedef struct arvore
{
int inf; int pos; struct arvore *esq; struct arvore *dir;
}arvore;
typedef struct in
{
int inf,pos,e,d;
}in;
int op; in ind;
void menu ()
{ printf("\n\n\tIndice Denso\n"); printf("\n1-Carregar arquivo principal."); printf("\n2-Criar arquivo de indice."); printf("\n3-Buscar um elemento."); printf("\n4-Imprimir arquivo de indice."); printf("\n5-Sair.\n\n "); scanf("%i",&op);
}
arvore* remove_no(arvore *arv, car carro)
{
arvore *no;
if(arv->inf==carro.codigo) { if(arv->esq==NULL && arv->dir==NULL) { free(arv); return NULL; } else if(arv->esq==NULL || arv->dir==NULL) { if(arv->esq == NULL) no=arv->dir; else no=arv->esq; free(arv); return no; } else { no=arv->dir; while(no->esq!=NULL) { no=no->esq; } arv->inf=no->inf; arv->pos=no->pos; carro.codigo=no->inf; arv->dir=remove_no(arv->dir, carro); carro.codigo=arv->inf; return arv; } } else { if(carro.codigoinf) arv->esq=remove_no(arv->esq, carro); else arv->dir=remove_no(arv->dir, carro); return arv; }
}
int altura(arvore *arv)
{
int esq,dir;
if(arv==NULL) return 0; esq=altura(arv->esq); dir=altura(arv->dir); if(esq>dir) return esq+1; else return dir+1;
}
arvore*