Cap 6 - Vets Listas e Seqs-4spp

Insertatrank e removeatrank precisam buscar na lista

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: . Se uma posição intermediária for inserida ou removida, as posições deslocadas deverão ter suas colocações atualizadas. 0 1 2 3 posições S 29 Desempenho das Diferentes Implementações de Seqüência f l 30 Observações Arranjo Lista " size, isEmpty atRank, rankOf, elemAtRank first, last, before, after O(1) O(1) O(1) O(1) O (n ) O(1) " replaceElement, swapElements replaceAtRank O(1) O(1) O(1) O (n ) insertAtRank, removeAtRank insertFirst, insertLast O (n ) O(1) O (n ) O(1) insertAfter, insertBefore remove O (n ) O (n ) O(1) O(1) Operação Elemento Posição. " public Object replaceAtRank (int rank, Object element) throws BoundaryViolationException { // O (n) time checkRank(rank); return replaceElement(atRank(rank),element); } elementos Utiliza-se um vetor circular armazenando posições. 31 " " " Note que apesar de rankOf, before, after, replaceElement e swapElements serem baseados em posições, sua implementação em vetor é O(1) pois uma posição armazena a respectiva colocação que por sua vez recupera o índice correspondente do vetor a partir das variáveis f e l. insertAtRank e removeAtRank precisam buscar na lista duplamente encadeada a partir header/trailer pela colocação desejada (rank). Logo são O(n) no pior caso. insertAtRank e removeAtRank são O(n) no pior caso também na implementação por vetor. Nesse caso, no entanto, a razão da complexidade linear é diferente; trata-se da necessidade de deslocar os demais elementos do vetor e atualizar suas colocações. A necessidade de deslocar os demais elementos do vetor e atualizar suas colocações também é a razão pela qual insertAfter, insertBefore e remove são O(n) nessa implementação. Em princípio, a necessidade de atualizar as colocações dos demais elementos torna insertFirst O(n) na implementação baseada em vetor. É possível no entanto, com um pequeno esforço, tornar insertFirst O(1). 32 Iteradores " " " Um iterador abstrai o processo de percorrer uma coleção de elementos. Estendem o conceito de Posição adicionando uma capacidade transversal (deslocamento). Alguns métodos básicos de um TAD Iterador: !  !  " " Contêiners booleano hasNext(): verifica se existem elementos remanescentes. Objeto nextObject(): (remove e) retorna o próximo elemento do iterador. " " Um iterador é tipicamente associado com uma outra estrutura de dados. Nós podemos incrementar nossos TADs Pilha, Fila, Deque, Vetor, Lista e Seqüência com o seguinte método: !  " Podem ser simples (e.g. deslocamento para frente com uma " única varredura) ou sofisticados (e.g. avanços, retornos e múltiplas varreduras). Implementação através de vetor ou lista encadeada. Iterador elements(): retorna um iterador para a estrutura de dados correspondente. Java proporciona iteradores para as estruturas de dados fornecidas em suas bibliotecas (e.g. Vector). Duas topologias diferenciadas: !  !  snapshot: congela o conteúdo da estrutura de dados em um dado momento. dynamic: acompanha mudanças na estrutura de dados. 33 Hierarquia de TADs Contêiner Inspecionável size, isEmpty, elements Vetor Inspecionável Lista Inspecionável elemAtRank first, last, before, after Seqüência Inspecionável atRank, RankOf Vetor Lista replaceAtRank, replaceElement, swapElements, insertFirst, insertLast, insertBefore, insertAfter, remove insertAtRank, removeAtRank Seqüência 35 " Pilhas, Filas, Deques, Vetores, Listas, e Seqüências são contêiners, isto é, estruturas de dados que armazenam e organizam uma coleção de objetos. " Possuem métodos construtores, métodos de consulta (ou acesso) e métodos de atualização. " Uma posição não é um contêiner pois armazena um único elemento. " Contêiners inspecionáveis não contêm métodos de atualização, ou seja, são imutáveis : Vetor inspecionável size, isEmpty, elemAtRank Vetor replaceAtRank, insertAtRank, removeAtRank Podemos utilizar um vetor inspecionável para permitir apenas acesso aos métodos de consulta do TAD. 34...
View Full Document

This note was uploaded on 04/02/2012 for the course DC 11 taught by Professor Milton during the Spring '12 term at Alaska Pacific University.

Ask a homework question - tutors are online