5/18/2012 Programação de Computadores II TCC‐00.174 Prof.: Leandro A. F. Fernandes www.ic.uff.br/~laffernandes Conteúdo: Listas Lineares Material elaborado pelos profs. Anselmo Montenegro e Marcos Lage com contribuições do prof. Leandro A. F. Fernandes Estrutura de Dados Introdução Uma estrutura de dados armazena dados na memória do computador a fim de permitir o acesso eficiente dos mesmos. 2012.1 Programação de Computadores II 2 1 5/18/2012 Estrutura de Dados Introdução Uma estrutura de dados bem projetada permite a manipulação eficiente, em tempo e em espaço, dos dados armazenados através de operações específicas. 2012.1 Programação de Computadores II 3 Listas Lineares Introdução Listas Lineares: São de fácil manipulação. Agrupam informações referentes a um conjunto de elementos que se relacionam entre si 2012.1 Programação de Computadores II 4 2 5/18/2012 Listas Lineares Definição Uma lista linear é um conjunto de n elementos x1, x2, ..., xn, cuja propriedade estrutural baseia‐se nas posições relativas de seus elementos. 2012.1 Programação de Computadores II 5 Listas Lineares Definição Uma lista linear é um conjunto de n elementos x1, x2, ..., xn, cuja propriedade estrutural baseia‐se nas posições relativas de seus elementos. Supondo n > 0, temos: x0 é o primeiro elemento para 0 < k < n: xk é precedido por xk−1 e seguido por xk+1 xn é o último elemento. 2012.1 Programação de Computadores II 6 3 5/18/2012 Listas Lineares Operações Para manipular listas lineares, precisamos disponibilizar operações de: Busca, Inclusão, Remoção. 2012.1 Programação de Computadores II 7 Listas Lineares Operações Para manipular listas lineares, precisamos disponibilizar operações de: Busca, Inclusão, Remoção. Casos particulares … 1. Insersão e remoção em um único extremo: Pilha. 2. Insersão e remoção em extremos distintos: Fila. 2012.1 Programação de Computadores II 8 4 5/18/2012 Listas Lineares Alocação Ao desenvolver uma implementação para listas lineares devemos levar em conta como podemos armazena‐lá no computador. Opções: Sequencial ou Encadeada Aula de hoje: Implementação Sequencial. 2012.1 Programação de Computadores II 9 Listas Lineares Alocação Sequencial A forma mais natural de armazenar uma lista linear consiste em armazenar seus elementos em células de memória consecutivas. Suponha que cada célula tem endereço ε e ocupa k bytes: 2012.1 Programação de Computadores II 10 5 5/18/2012 Listas Lineares Ordenadas Os elementos da lista podem ser formado por “campos”: Uma chave k[i] está associada ao nó L[i]. A lista é dita classificada ou ordenada por chave quando: se i < j então k[i] precede k[j] 2012.1 Programação de Computadores II 11 Listas Lineares Exercício Implemente em Java uma lista linear utilizando Arrays. 2012.1 Programação de Computadores II 12 6 5/18/2012 Listas Lineares Exercício Casa: Implemente em Java uma lista linear ordenada utilizando Arrays. 2012.1 Programação de Computadores II 13 Listas Lineares Estruturas de Acesso Restrito Para muitas aplicações é necessário impor restrições de acesso aos dados. Tais restrições podem ser benéficas por: • aliviar a necessidade de usar estruturas com mais detalhes. • permitir implementações mais simples e flexíveis. 2012.1 Programação de Computadores II 14 7 5/18/2012 Listas Lineares Pilhas Apenas duas operácões básicas: PUSH ou Empilha: Acrescentar no topo da pilha POP ou Desempilha: Retirar do topo da pilha 2012.1 Programação de Computadores II 15 Listas Lineares Pilhas Como o último elemento que entrou na pilha será o primeiro a sair da pilha. A pilha é conhecida como uma estrutura do tipo: LIFO (“Last In First Out”). 2012.1 Programação de Computadores II 16 8 5/18/2012 Listas Lineares Exercício Implemente em Java uma pilha utilizando Arrays. 2012.1 Programação de Computadores II 17 Listas Lineares Filas Apenas duas operácões básicas: Queue ou Enfila: v é inserido no final da fila. Dequeue ou Desenfila: descarta o elemento mais antigo da fila, ou seja, aquele que está no início da fila. 2012.1 Programação de Computadores II 18 9 5/18/2012 Listas Lineares Filas Como o primeiro elemento que entrou na fila será o primeiro a sair da fila. A fila é conhecida como uma estrutura do tipo: FIFO (“First In First Out”). 2012.1 Programação de Computadores II 19 Listas Lineares Exercício Implemente em Java uma fila utilizando Arrays. 2012.1 Programação de Computadores II 20 10