diff --git a/fonte/U6 - Estruturas de dados básicas flexíveis/java/matriz/Celula.java b/fonte/U6 - Estruturas de dados básicas flexíveis/java/matriz/Celula.java index d22592a..631efe9 100644 --- a/fonte/U6 - Estruturas de dados básicas flexíveis/java/matriz/Celula.java +++ b/fonte/U6 - Estruturas de dados básicas flexíveis/java/matriz/Celula.java @@ -1,6 +1,6 @@ class Celula { - private int elemento; - private Celula inf, sup, esq, dir; + public int elemento; + public Celula inf, sup, esq, dir; public Celula(){ this(0, null, null, null, null); diff --git a/fonte/U6 - Estruturas de dados básicas flexíveis/java/matriz/Matriz.java b/fonte/U6 - Estruturas de dados básicas flexíveis/java/matriz/Matriz.java index 4b4dded..d7f9c99 100644 --- a/fonte/U6 - Estruturas de dados básicas flexíveis/java/matriz/Matriz.java +++ b/fonte/U6 - Estruturas de dados básicas flexíveis/java/matriz/Matriz.java @@ -3,9 +3,7 @@ class Matriz { private int linha, coluna; public Matriz (){ - this.linha = this.coluna = 3; - - //alocar a matriz com this.linha linhas e this.coluna colunas + Matriz(3, 3); } public Matriz (int linha, int coluna){ @@ -15,10 +13,18 @@ class Matriz { //alocar a matriz com this.linha linhas e this.coluna colunas } + public Matriz soma (Matriz m) { Matriz resp = null; if(this.linha == m.linha && this.coluna == m.coluna){ + resp = new Matriz(this.linha, this.coluna); + for(){ + for(){ + //sendo c (pont em resp), a (em this) e b (em m) + c.elemento = a.elemento + b.elemento; + } + } //... } @@ -47,7 +53,6 @@ class Matriz { public void mostrarDiagonalSecundaria (){ if(isQuadrada() == true){ - } } } diff --git a/fonte/U7 - Árvores binárias/c/arvoreBinariaC/arvorebinaria.c b/fonte/U7 - Árvores binárias/c/arvoreBinariaC/arvorebinaria.c index da413de..c727113 100644 --- a/fonte/U7 - Árvores binárias/c/arvoreBinariaC/arvorebinaria.c +++ b/fonte/U7 - Árvores binárias/c/arvoreBinariaC/arvorebinaria.c @@ -199,3 +199,58 @@ void antecessor(No** i, No** j) { } } + +/** + * Metodo publico iterativo para remover elemento. + * @param x Elemento a ser removido. + */ +void removerSucessor(int x) { + removerRecSucessor(x, &raiz); +} + +/** + * Metodo privado recursivo para remover elemento. + * @param x Elemento a ser removido. + * @param i No** endereco do ponteiro No + */ +void removerRecSucessor(int x, No** i) { + if (*i == NULL) { + errx(1, "Erro ao remover!"); + + } else if (x < (*i)->elemento) { + removerRec(x, &((*i)->esq)); + + } else if (x > (*i)->elemento) { + removerRec(x, &((*i)->dir)); + + } else if ((*i)->dir == NULL) { + No* del = *i; + *i = (*i)->esq; + free(del); + + } else if ((*i)->esq == NULL) { + No* del = *i; + *i = (*i)->dir; + free(del); + + } else { + sucessor(i, &((*i)->dir)); + } +} + +/** + * Metodo para trocar no removido pelo sucessor. + * @param i No** endereco do ponteiro No que contem o elemento removido. + * @param j No** endereco do ponteiro No da subarvore esquerda. + */ +void sucessor(No** i, No** j) { + if ((*j)->esq != NULL) { + sucessor(i, &((*j)->esq)); + + } else { + No* del = *j; + (*i)->elemento = (*j)->elemento; + (*j) = (*j)->dir; + free(del); + } +} diff --git a/fonte/U7 - Árvores binárias/c/arvoreBinariaC/arvorebinaria.h b/fonte/U7 - Árvores binárias/c/arvoreBinariaC/arvorebinaria.h index f00b1ae..8f59d72 100644 --- a/fonte/U7 - Árvores binárias/c/arvoreBinariaC/arvorebinaria.h +++ b/fonte/U7 - Árvores binárias/c/arvoreBinariaC/arvorebinaria.h @@ -15,6 +15,8 @@ void caminharPosRec(No*); void inserirRec(int, No**); void removerRec(int, No**); void antecessor(No**, No**); +void removerRecSucessor(int, No**); +void sucessor(No**, No**); void start(); bool pesquisar(int); @@ -23,3 +25,4 @@ void caminharPre(); void caminharPos(); void inserir(int); void remover(int); +void removerSucessor(int); diff --git a/fonte/U7 - Árvores binárias/c/arvoreBinariaC/exec b/fonte/U7 - Árvores binárias/c/arvoreBinariaC/exec new file mode 100755 index 0000000..86b5765 Binary files /dev/null and b/fonte/U7 - Árvores binárias/c/arvoreBinariaC/exec differ diff --git a/fonte/U7 - Árvores binárias/c/arvoreBinariaC/principal.c b/fonte/U7 - Árvores binárias/c/arvoreBinariaC/principal.c index 6e7f821..04868e7 100644 --- a/fonte/U7 - Árvores binárias/c/arvoreBinariaC/principal.c +++ b/fonte/U7 - Árvores binárias/c/arvoreBinariaC/principal.c @@ -46,10 +46,10 @@ int main(){ printf("\nVoltando com a árvore inicial"); printf("\nRemover: 3"); printf("\nCaminhar: central, pre e pos\n"); - remover(2); + removerSucessor(2); inserir(1); inserir(2); - remover(3); + removerSucessor(3); caminharCentral(); caminharPre(); diff --git a/fonte/U7 - Árvores binárias/java/arvoreBinariaDeLista/Agenda.java b/fonte/U7 - Árvores binárias/java/arvoreBinariaDeLista/Agenda.java index 0faff51..66b0550 100644 --- a/fonte/U7 - Árvores binárias/java/arvoreBinariaDeLista/Agenda.java +++ b/fonte/U7 - Árvores binárias/java/arvoreBinariaDeLista/Agenda.java @@ -2,14 +2,20 @@ public class Agenda { private No raiz; public Agenda() { - /*raiz = new No ('M'); + raiz = new No ('M'); raiz.esq = new No ('F'); raiz.dir = new No ('T'); - raiz.esq.esq = new No ('C');*/ - raiz = null; + raiz.esq.esq = new No ('C'); //inserir todas as 26 letras do alfabeto... } + + + + + + + public boolean pesquisarNome(String nome) { return pesquisarNome(raiz, nome); }