Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "hanking.h"
- struct arv{
- ArvNo* raiz;
- };
- struct arvno{
- char nome[81];
- int pont;
- struct arvno *esq;
- struct arvno *dir;
- };
- ArvNo* arv_criano(char* nome, int pont, ArvNo* esq, ArvNo* dir){
- ArvNo* p = (ArvNo*)malloc(sizeof(ArvNo));
- p->pont = pont;
- strcpy(p->nome,nome);
- p->esq = esq;
- p->dir = dir;
- return p;
- }
- Arv *arv_cria(ArvNo* r){
- Arv* a = (Arv*)malloc(sizeof(Arv));
- a->raiz = r;
- return a;
- }
- static ArvNo* insere(ArvNo* r, char* nome, int pont){
- if(r==NULL){
- r = arv_criano(nome,pont,NULL,NULL);
- /*r->pont = pont;
- strcpy(r->nome,nome);
- r->esq = r->dir = NULL;*/
- }
- else if(pont < r->pont){
- r->esq = insere(r->esq,nome,pont);
- }
- else{
- r->dir = insere(r->dir,nome,pont);
- }
- return r;
- }
- void abb_insere(Arv* a, char* nome, int pont){
- a->raiz = insere(a->raiz,nome,pont);
- }
- static void imprime(ArvNo* r){
- if(r!=NULL){
- imprime(r->dir);
- printf(" %s: %d\n",r->nome,r->pont);
- imprime(r->esq);
- }
- }
- void arv_imprime(Arv* a){
- imprime(a->raiz);
- }
- Arv* hanking_carrega(void){
- FILE* arqv = fopen("lista_hanking.txt", "a+t");
- ArvNo* p = (ArvNo*)malloc(sizeof(ArvNo));
- char nome[121];
- int pont;
- if(arqv == NULL){
- printf("\nFALHA AO ABRIR ARQUIVO\n");
- exit(1);
- }
- Arv* h = arv_cria(p);
- while(fscanf(arqv,"%d\n",nome) != EOF){
- fscanf(arqv, "%*s: %d\n",nome,pont);
- fscanf(arqv,"%d\n\n",pont);
- }
- fclose(arqv);
- return h;
- }
- static void salva(FILE* fp, ArvNo* no){
- if(no != NULL){
- fprintf(fp,"Nome: %s\n",no->nome);
- fprintf(fp,"pontuação: %s\n\n",no->pont);
- fclose(fp);
- }
- salva(no->esq);
- salva(no->dir);
- }
- void arv_salva(Arv* arv){
- salva(arv->raiz);
- }
- int main(void){
- //FILE* fp = fopen("lista_hanking","a+t");
- Arv* arvore = arv_cria(NULL);
- //arvore = hanking_carrega();
- abb_insere(arvore,"Aluno1",250);
- abb_insere(arvore,"Aluno2",250);
- abb_insere(arvore,"Aluno3",80);
- abb_insere(arvore,"Aluno4",150);
- abb_insere(arvore,"Aluno5",130);
- abb_insere(arvore,"Aluno6",210);
- arv_imprime(arvore);
- arv_salva(arvore);
- printf("\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement