Estrutura de Dados II Introdução à Estrutura de Dados www.aeciocosta.com.br [email protected] Estrutura de Dados Estrutura de dados é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente. Elas normalmente irão crescer, encolher ou sofrer outras mudanças ao longo do tempo. Tipos de estrutura de dados homogêneos (vetores e matrizes) Conjuntos de dados formados pelo mesmo tipo de dado primitivo heterogêneos (registros) Conjuntos de dados formados por tipos de dados primitivos diferentes (campos do registro) em uma mesma estrutura. Estrutura de Dados Vetores Estruturas de dados lineares e est á ticas, isto é , s ão compostas por um número fixo (finito) de elementos de um determinado tipo de dados. Vetores: Desvantagens Tamanho máximo fixo Mesmo vazias ocupam espaço grande de memória Operações podem involver muitos deslocamentos de dados: • Inclusão em uma posição ou no início • Exclusão em uma posição ou no início Estrutura de Dados Listas Estrutura de dados linear Uma das formas mais usadas para se manter dados agrupados é a lista. Lista Linear: Agrupa informações referentes a um conjuntos de elementos. Operações sobre uma Lista -Operações Comuns Pesquisa, inserção, alteração e remoção de um determinado elemento da lista. -Outras Operações Determinação do número total de elementos de uma lista Ordenamento da listaUnião de duas ou mais listas Particionamento da lista e sublistas etc. Tipos Especiais de Listas Fila: Listas lineares onde todas as inserções são realizadas num determinado extremo da lista e as remoções, no outro extremo. Conhecidas também como FIFO(First-In/First-Out) Tipos Especiais de Listas Pilhas: Listas lineares onde todas as inser ç õ es e remo ç ões são realizadas em um único extremo da lista. Conhecidas também como listas LIFO (Last-In/First-Out) Tipos Especiais de Listas Fila Dupla: lista linear onde as inserções e remoções podem ser feitas em qualquer extremo. Fila Dupla de Entrada Restrita (FDER): inserção restrita a um único extremo. Fila Dupla de Saída Restrita (FDSR): remoção restrita a um único extremo. Implementação das Listas Quanto a alocação de memória, a implementação de listas pode ser: Alocação Estática e Dinâmica Estática -Quantidade total de mem ó ria utilizada pelos dados de um programa é previamente conhecida e definida de modo imutável. -Durante toda a execução a quantidade de memória utilizada não varia. Dinâmica -Durante a execu ç ã o, a quantidade de mem ó ria utilizada pelos dados do programa é variável. Alocação Sequencial Sequencial: elementos da lista são colocados em posições de memória consecutivas. -Pontos Fortes Fácil endereçamento Aritimética simples Fácil inserção e supressão de elementos no final da lista -Pontos Fracos Difícil inserção e supressão de elementos no meio da lista Difícil movimentação de elementos na lista. Lista Estática Sequencial Implementada usando um vetor -Quantidade máxima de nós determinada -Memória alocada em tempo de compilação Alocação Encadeada Listas sequenciais são estruturas de fácil acesso. -No entanto, o acesso a memória não é ótimo -Listas muito pequenas sofrem de problemas de re-alocação. -Listas muito grandes alocam memória desnecessariamente. Listas encadeadas fornecem uma maneira de otimizar a alocação de memória -Para cada novo elemento é alocado um espaço na memória Nós de uma lista Cada elemento da lista é chamado de um nó da lista Um nó é uma estrutura que contém 2 campos: -A informação -Um endereço para o próximo elemento da lista Nós de uma lista A lista é representada como um endereço para o primeiro nó. -A partir deste nó podemos acessar os demais Lista Simplesmente Encadeadas Dinâmica Encadeada -Implementada usando objetos (Java), ponteiros (C) ou registros (Pascal) -Os espaços de memória para os nós são alocados dinamicamente, à medida que os novos nós são inseridos na lista -E liberados à medida que os nós são excluídos Lista Simplesmente Encadeadas Uma LSE pode ser descrita como sendo um conjunto dinâmico de nós Composta por uma estrutura de nós previamente definida Lista Simplesmente Encadeadas Exemplo Operações em Listas Criação Inserção Remoção Busca Verificação de Lista Vazia Liberação de memória Operações em Listas Inserção Operações em Listas Inserção Existem diversos tipos de inserção que podem ser feitas em uma lista. • Diferente das pilhas e filas, os elementos podem ser inseridos em qualquer posição da lista. no início em posição N no final ordenada na lista Operações em Listas - Inserção Criando e Inserindo Elementos Operações em Listas - Inserção Inserindo Elementos Operações em Listas Inserção no Início Operações em Listas Remoção Operações em Listas Removendo Elemento