DEV Community

Gabriel de Oliveira
Gabriel de Oliveira

Posted on

Portfólio - Aula 06

Nessa aula foram apresentados os conceitos de estrutura de dados e proposto para fazer um programa de inserção e exclusão de elementos.

#include <stdio.h>
#include <stdlib.h>


struct noArv {
    int cpf;
    struct noArv* esq;
    struct noArv* dir;
};

typedef struct noArv Arv;

void imprimeEmOrdem (Arv* a);

Arv* insere (Arv* a, int cpf);
Arv* retira (Arv* r, int cpf);


void imprimeEmOrdem(Arv* a) {
    if (a != NULL) {
        imprimeEmOrdem(a->esq);
        printf("%d ", a->cpf);
        imprimeEmOrdem(a->dir);
    }
}

Arv* insere( Arv* a, int cpf) {
    if (a == NULL) {
        a = (Arv*)malloc(sizeof(Arv));
        a->cpf = cpf;
        a->esq = NULL;
        a->dir = NULL;
    } else if (cpf < a->cpf) {
        a->esq = insere (a->esq, cpf);
    } else if (cpf > a->cpf) {
        a->dir = insere(a->dir, cpf);
    }
    return a;
}

Arv* retira (Arv* r, int cpf){
    if (r==NULL) {
        return NULL;
    } else if (r->cpf > cpf) {
        r->esq = retira(r->esq, cpf);
    } else if (r-> cpf < cpf) {
        r->dir = retira(r->dir, cpf);
    } else {
        if (r->esq == NULL && r->dir == NULL) {
            free (r);
            r = NULL;
        } else if (r->esq == NULL) {
            Arv* aux = r;
            r = r->dir;
            free (aux);
        } else if (r->dir == NULL) {
            Arv* aux = r;
            r = r->esq;
            free (aux);
        }
    }
    return r;
}

void main() {

Arv* a = NULL;

    a = insere(a, 1254);
    a = insere(a, 2352);
    a = insere(a, 3412);
    a = insere(a, 4201);
    a = insere(a, 5698);

    printf("Saída:\n");
    imprimeEmOrdem(a);

    a = retira(a, 4201);


    printf("\n\nDepois de retirar o elemento 4201:\n");
    imprimeEmOrdem(a);
}
Enter fullscreen mode Exit fullscreen mode

Execução do código aqui: https://onlinegdb.com/TmOsoDITJ

Top comments (0)