#include #include #include "mapa.h" #include "arvore.h" /* IMPLEMENTAÇÃO DE MAPA */ struct smapa { int chave; int dados; Mapa* esq; Mapa* dir; }; /* Funções auxiliares */ static Mapa *cria_no (int c, int d) { Mapa *nn = (Mapa *)malloc(sizeof(Mapa)); if (nn!=NULL) { nn->esq = nn->dir = NULL; nn->chave =c; nn->dados = d; } return nn; } /* Funções exportadas */ Mapa* cria (void) { return NULL; } int busca (Mapa *m, int chave) { while (m!=NULL) { if (chave < m->chave) m = m->esq; else if (chave > m->chave) m = m->dir; else return m->dados; /* achou */ } return INT_MIN; } void destroi (Mapa *m) { if (m==NULL) return; destroi (m->esq); destroi (m->dir); free(m); } Mapa *insere (Mapa *m, int chave, int d) { /* implementação incompleta: mais tarde implementaremos! */ if (m==NULL) return cria_no(chave, d); return m; } Mapa *retira (Mapa *m, int chave) { /* implementação incompleta: mais tarde implementaremos! */ if (m==NULL) return NULL; return m; } /* IMPLEMENTAÇÃO DE ÁRVORE */ Mapa* cria_raiz(int chave, int dados, Mapa* sae, Mapa* sad) { Mapa *r = cria_no(chave, dados); if (r != NULL) { r->esq = sae; r->dir = sad; } return r; } void mostra(Mapa* m) { printf("["); if (m != NULL) { printf("<%d %d> ", m->chave, m->dados); mostra(m->esq); mostra(m->dir); } printf("] "); } /* Funções para implementar */ int num_nos (Mapa *m) { return 0; /* troque por sua implementação */ } int maior_chave (Mapa *m) { return INT_MIN; /* troque por sua implementação */ } int num_maiores_que (Mapa *m, int n) { int nos = 0; /* implementação aqui */ return nos; }