Trab

349 palavras 2 páginas
#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);

Relacionados

  • trab
    474 palavras | 2 páginas
  • Trab
    272 palavras | 2 páginas
  • trab
    289 palavras | 2 páginas
  • trab trab
    1823 palavras | 8 páginas
  • TRAB
    434 palavras | 2 páginas
  • Trabs trabs
    550 palavras | 3 páginas
  • Trab
    3169 palavras | 13 páginas
  • Trab
    2880 palavras | 12 páginas
  • trab
    416 palavras | 2 páginas
  • Trab
    1246 palavras | 5 páginas