Estrutura de Dados Prof. Me. Marcos Alves [email protected] Operações: Simples: Caracter (char): ‘a’ ▪ Aritméticas Inteiro (int): 20 ▪ Inserção Real (float): 32,86 ▪ Remoção Booleano (bool): true ▪ Ordenação Compostos: ▪ Máximo Cadeias: “Estruturas de Dados” Vetores: Matrizes: 10 20 ▪ Mínimo 30 a b c A B C 1 2 3 Estrutura de Dados ▪ Inversão ▪ Transposição, etc. Prof. Me. Marcos Alves 2 Estruturas construídas para armazenar determinados tipos de dados. Especificam operadores que permitem a manipulação destes dados. Exemplos: Listas, Pilhas, Árvores, Números Complexos 5 4 2 4 5 -2 5 2 6 20 Estrutura de Dados Prof. Me. Marcos Alves 3 Estrutura de Dados Ramo da computação que estuda os diversos mecanismos de organização de dados para atender aos diferentes requisitos de processamento. Tipos: Lineares: elementos acessados sequencialmente. ▪ Vetores, pilhas, filas. Não Lineares: elementos com diversos ramos de acesso. ▪ Árvores, grafos. Estrutura de Dados Prof. Me. Marcos Alves 4 Conjunto de n > 0 nós L[1], L[2], ..., L[n], sendo que: Se n > 0 é o primeiro nó, para 1 < k ≤ n, o nó L[k] é precedido pelo nó L[k-1]. Operações mais frequentes: Inserção; Remoção; Busca. Cada nó é formado por campos que armazenam características distintas dos elementos da lista. Cada nó possui um identificador: chave. Os nós podem estar ou não ordenados, pela chave. Termos: sucessor, antecessor, primeiro, último, início (antes do primeiro) e final (depois do último). Estrutura de Dados Prof. Me. Marcos Alves 5 nó1 nó2 nó3 nó4 Em listas ordenadas: Busca Binária chave nome Algoritmo busca1(x) i ← 0; busca ← -1; enquanto i < n faça se L[i].chave = x então busca ← i; i ← n; senão i ← i + 1; fimSe fimEnquanto fimAlgoritmo Estrutura de Dados endereço Algoritmo busca2(x) L[n].chave ← x; i ← 0; enquanto L[i].chave ≠ x faça i ← i + 1; fimEnquanto se i ≠ n então então busca ← i; senão busca ← -1; fimSe fimAlgoritmo Prof. Me. Marcos Alves 6 Algoritmo Insere(novo-valor) Insere elementos no final da lista. se n < M então se busca(x) = -1 Em uma lista ordenada, a posição do então nó torna-se relevante. L[n] ← novo-valor; n ← n + 1; senão escreva “elemento já existe”; fimSe senão overflow; fimSe fimAlgoritmo Estrutura de Dados Prof. Me. Marcos Alves 7 Desloca elementos à esquerda. Algoritmo Remove(x) se n ≠ 0 então Alternativa: copiar último elemento indice ← busca(x); para a posição do elemento a ser se indice ≠ -1 então removido. então valor-recuperado ← L[indice]; para i de indice até n-2 faça L[i] ← L[i+1]; fimPara n ← n - 1; senão escreva “elemento não encontrado na lista”; fimSe senão underflow; fimSe fimAlgoritmo Estrutura de Dados Prof. Me. Marcos Alves 8 Dadas duas listas L1 e L2, que possam estar desordenadas e contendo elementos repetidos: 1. Verifique se L1 está ordenada ou não (a ordem pode ser crescente ou decrescente); 2. Faça uma cópia da lista L1 em uma outra lista L2; 3. Faça uma cópia da lista L1 em L2, eliminando elementos repetidos; 4. Inverta L1 colocando o resultado em L2; 5. Inverta L1 colocando o resultado na própria L1; 6. Intercale L1 com a lista L2, gerando uma lista L3. Considere que L1, L2 são ordenadas; 7. Gere uma lista L2 onde cada registro contém dois campos de informação: elem contém um elemento de L1, e count contém quantas vezes este elemento apareceu em L1; 8. Elimine de L1 todas as ocorrências de um elemento dado, L1 ordenada; 9. Assumindo que os elementos de lista L1 são inteiros positivos, forneça os elementos que aparecem o maior e o menor número de vezes (forneça os elementos e o número de vezes correspondente); Estrutura de Dados Prof. Me. Marcos Alves 9