Trab
#include
struct Pessoa{ int codigo;
};
typedef struct Pessoa p;
struct arvore{ p info; struct arvore *esq; struct arvore *dir;
};
typedef struct arvore A;
A *raiz;
A *addArvore(A *raiz,A *r,p info){ if(r==NULL) { r =malloc(sizeof(A)); r->esq = NULL; r->dir = NULL; r->info = info; if(raiz==NULL){ return r; }
if(info.codigoinfo.codigo) raiz->esq=r; else raiz->dir=r; return r; } if(info.codigoinfo.codigo) addArvore(r,r->esq,info); else addArvore(r,r->dir,info);
}
int menu( ){ int opc; printf("\n \n \t Ãrvore Binária \n"); printf("\n \t 1 - Inserir;"); printf("\n \t 2 - Listar;"); printf("\n \t 3 - Sair;"); printf("\n \n \t Digite sua Opção: "); scanf("%d",&opc); return(opc);
}
A *listar(A *raiz){ if(raiz==NULL){ //printf("\n Estrutura Vazia!"); return NULL; } printf("\n \n \t Código: %d",raiz->info.codigo); listar(raiz->esq); listar(raiz->dir);
}
A *Salvar(A *raiz) { FILE *f; p aux; int cont=0; f = fopen("codigos.txt", "a");
if(raiz==NULL){ return NULL; }else{ aux=raiz->info; fwrite(&aux, sizeof(p), 1, f); Salvar(raiz->esq); Salvar(raiz->dir); } fclose(f);
}
main( )
{
int opc; p x; raiz=NULL;
FILE *f; p aux; int i=0; f = fopen("codigos.txt", "r"); if(f == NULL) { f = fopen("codigos.txt", "w"); fclose(f); f = fopen("codigos.txt", "r"); } while(feof(f)!=1) { fread(&aux, sizeof(p), 1, f); if(!feof(f)){ if(raiz==NULL){ raiz=addArvore(raiz,raiz, aux); printf("\n \t Dados Carregados com Sucesso! \n \n"); i++; } if(i==0){ addArvore(raiz,raiz, aux); i++; } i--; } } fclose(f);