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);
}
Execução do código aqui: https://onlinegdb.com/TmOsoDITJ
Top comments (0)