• [x] AULA 8.01 - INTRODUÇÃO

    • Estrutura de Dados - Consiste em uma organização de dados na memória de um computador ou em um dispositivo de armazenamento, de modo que esses dados possam ser utilizados de forma eficiente.
    • As principais estruturas de dados focadas nesse módulo:
  • [x] AULA 8.02 - PILHAS I

    • Array/Vetor: É definido abstratamente como um conjunto finito e ordenado de elementos homogêneos.
    • Pilha: É um conjunto ordenado de itens no qual novos itens podem ser inseridos e a partir do qual podem ser eliminados itens do topo da pilha. (TAD - Tipo Abstrato de Dado)
    • Last in, first out - Último elemento adicionado é o primeiro a ser retirado.
  • [x] AULA 8.03 - PILHAS II

    • Básico:
    // Array para armazenar elementos.
    var elementos = [];
    // Variável para armazenar o último elemento.
    var topo = -1;
    // Constante para definir o tamanho máximo da pilha.
    const max = 10;
    
    • Função Push (empurrar):
    function push(num) {
    		// Verificação para limite da pilha.
        if (topo < max) {
            topo ++;
            elementos[topo] = num;
        }
        else
            console.log("Pilha está cheia.");
    }
    
    • Função Pop (retirar):
    function pop() {
    		// Verificação para saber se a lista está vazia.
        if (topo != -1) {
    				// 'let' representa uma variável local.
            let num = elementos[topo];
            topo --;
            return num;
        }
        else
            console.log("Pilha está vazia.")
    }
    
  • [x] AULA 8.04 - FILAS E LISTAS

    • Fila: É um conjunto ordenado de itens a partir do qual podem-se eliminar elementos do início da fila e no qual podem-se inserir elementos no fim da fila. (TAD - Tipo Abstrato de Dado)
    • First in, first out - Primeiro elemento adicionado é o primeiro a ser retirado.
  • [x] AULA 8.05 - BUSCA I

    • Busca sequencial: A partir de um determinado conjunto de valores, encontrar a posição está o valor procurado. Caso não encontrado, retornar '-1' como valor inválido.
    • Função Busca Sequencial:
    function busca(num) {
    		// Repetição para percorrer os elementos do array.
        for (i = 0; i < elementos.length; i ++) {
    				// Verificação caso o número pertença ao array.
            if (num == elementos[i])
                return i;
        }
    		// Retorna '-1' caso contrário.
        return -1;
    }
    
  • [x] AULA 8.06 - BUSCA II

    Busca Binária: A partir de um determinado conjunto de valores, encontra o valor procurado subdividindo o array. A cada repetição, caso o elemento procurado seja menor, a metade da direita é descartada, caso contrário, a metade da esquerda é descartada até encontrar o elemento. Possui uma busca mais eficiente. Requisito: os valores precisam estar ordenados.

    • Função Busca Binária:
    function buscaBin(num) {
    		// Definição de variáveis locais necessárias.
        let inicio = 0, meio, fim = elementos[elementos.length - 1];
        // Repetição para percorrer o array.
    		while (inicio <= fim) {
    				// Variável meio recebe o elemento central.
            meio = parseInt((inicio + fim) / 2);
    				// Verificação caso o elemento seja encontrado.
            if (num == elementos[meio])
                return meio;
            else {
    						// Caso o número buscado seja maior.
                if (num > elementos[meio])
                    inicio = meio + 1;
    						// Caso o número buscado seja menor.
                else
                    fim = meio - 1;
            }
        }
        return -1;
    }
    
  • [x] AULA 8.07 - ALGORITMOS DE ORDENAÇÃO I

    • Procurando resolver o problema de ordenação de uma busca binária, por exemplo. Há alguns método de ordenação para arrays. Um dos mais simples, a bolha:
    • Função Bolha:
    function bolha() {
    		// Definição de variáveis locais necessárias.
        let aux, inicio = 0, fim = elementos.length - 1;
    		// Repetição dentro de repetição para ordenar o array.
        for (vezes = 0; vezes < elementos.length; vezes ++) {
            for (pos = inicio; pos < fim - vezes; pos ++) {
    						// Caso elemento seja maior que seu próximo,
    						// ambos trocam de posição.
                if (elementos[pos] > elementos[pos + 1]){
                    aux = elementos[pos];
                    elementos[pos] = elementos[pos + 1];
                    elementos[pos + 1] = aux;
                }
            }
        }
    }
    
  • [x] AULA 8.08 - ALGORITMOS DE ORDENAÇÃO II

    • Tabela Hash (tabela de dispersão): A ideia central é utilizar uma função aplicada sobre a chave da informação, para retornar o índice onde a informação deve estar armazenada.
    • Árvore Binária: É um conjunto finito de elementos que está vazio ou é particionado em três subconjuntos disjuntos. O primeiro contém um único elemento (raiz da árvore). Os outros dois subconjuntos são em si mesmo árvores binárias (subárvores esquerda e direita da árvore original) onde cada elemento de uma árvore é denominado como nó da árvore.