TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ATIVIDADES PRÁTICAS SUPERVISIONADAS - Classificação e Pesquisa

Por:   •  27/9/2015  •  Trabalho acadêmico  •  5.770 Palavras (24 Páginas)  •  307 Visualizações

Página 1 de 24

FACULDADE ANHANGUERA DE TAUBATÉ – UNIDADE II

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Classificação e Pesquisa

2º Bimestre / 2015

Curso: Ciência da Computação

Semestre: 4º e 5º - Turma A – Ano: 2015

Nome

RA

Taubaté

17 de Junho de 2015

Etapa 3.

Relatório 3 – Árvores Binárias de Pesquisa.

Código Fonte:

#include

#include

typedef struct No {

    char rua[30];

    char residencia[30];

    int medidor;

    struct No *esquerda;

    struct No *direita;

} No;

void iniciarArvore(No **Raiz) {

    *Raiz = NULL; }

void inserir(No **pRaiz, char r[30], int med, char res[30]) {

    if(*pRaiz == NULL) {

        *pRaiz = (No *) malloc(sizeof(No));

        (*pRaiz)->esquerda = NULL;

        (*pRaiz)->direita = NULL;

        strcpy((*pRaiz)->rua, r);

        strcpy((*pRaiz)->residencia, res);

        (*pRaiz)->medidor = med;  }

    else {

        if(med < (*pRaiz)->medidor)

            inserir(&(*pRaiz)->esquerda, r, med, res);

        if(med > (*pRaiz)->medidor)

            inserir(&(*pRaiz)->direita, r, med, res); } }

No *remover(No *r, int v) {

    if (r == NULL)

        return NULL;

    else if (r->medidor > v)

        r->esquerda = remover(r->esquerda, v);

    else if (r->medidor < v)

        r->direita = remover(r->direita, v);

    else {

        if (r->esquerda == NULL && r->direita == NULL) {

            free (r);

            r = NULL; }

        else if (r->esquerda == NULL) {

            No* t = r;

            r = r->direita;

            free (t); } }

    return 0; }

void EmOrdem(No *pRaiz) {

    if(pRaiz != NULL) {

        EmOrdem(pRaiz->esquerda);

        printf("\nMedidor.....:%d\n", pRaiz->medidor);

        printf("Rua.........:%s\n", pRaiz->rua);

        printf("Residencia..:%s\n", pRaiz->residencia);

        EmOrdem(pRaiz->direita); }}

void PreOrdem(No *pRaiz) {

    if(pRaiz != NULL) {

        printf("\nMedidor.....:%d\n", pRaiz->medidor);

        printf("Rua.........:%s\n", pRaiz->rua);

        printf("Residencia..:%s\n", pRaiz->residencia);

        PreOrdem(pRaiz->esquerda);

        PreOrdem(pRaiz->direita);} }

void PosOrdem(No *pRaiz) {

    if(pRaiz != NULL) {

        PosOrdem(pRaiz->esquerda);

        PosOrdem(pRaiz->direita);

        printf("\nMedidor.....:%d\n", pRaiz->medidor);

        printf("Rua.........:%s\n", pRaiz->rua);

        printf("Residencia..:%s\n", pRaiz->residencia); } }

No *arvorebusca(No *pRaiz,int med) {

    while (pRaiz != NULL && pRaiz->medidor != med) {

        if (pRaiz->medidor > med)

            pRaiz = pRaiz->esquerda;

        else

            pRaiz = pRaiz->direita; }

    return pRaiz; }

int main(int argc, char *argv[]) {

    char rua[30],res[30];

    int op, med, es, busca;

    No *arvore;

    No *aux;

    iniciarArvore(&arvore);

    while (op!=5) {

        system("title Cadastro de Residencias");

        printf("\n-----------------------\n");

        printf("Cadastro de residencias\n");

        printf("-----------------------\n\n");

        printf("1.Inserir um novo cadastro\n");

        printf("2.Consultar os cadastros\n");

        printf("3.Buscar nos cadastros\n");

        printf("4.Remover um cadastro\n");

        printf("5.Sair\n\n");

        printf("Escolha uma das opcoes: ");

        scanf("%d",&op);

        switch(op) {

        case 1:

            fflush(stdin);

            printf("\nDigite a rua da residencia: ");

            gets(rua);

            fflush(stdin);

            printf("Digite o numero da residencia: ");

            gets(res);

            printf("Digite o medidor de consumo: ");

            scanf("%d",&med);

            inserir(&arvore, rua, med, res);

            break;

        case 2:

            printf("\n1 - Pre-Ordem \n");

            printf("2 - Em Ordem \n");

            printf("3 - Pos Ordem \n");

            printf("\nEscolha a forma de exibicao: ");

            scanf("%d",&es);

            switch (es) {

            case 1:

                PreOrdem(arvore);

                break;

            case 2:

                EmOrdem(arvore);

                break;

            case 3:

                PosOrdem(arvore);

                break;  }

            break;

        case 3:

            printf("\nQual valor do medidor de consumo deseja pesquisar? ");

            scanf("%d",&busca);

            aux= arvorebusca(arvore, busca);

            if(aux->medidor == busca)  {

...

Baixar como (para membros premium)  txt (17.7 Kb)   pdf (208.2 Kb)   docx (86.8 Kb)  
Continuar por mais 23 páginas »
Disponível apenas no TrabalhosGratuitos.com