Trab

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (349 palavras )
  • Download(s) : 0
  • Publicado : 28 de junho de 2012
Ler documento completo
Amostra do texto
#include
#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);...
tracking img