Lista Ligada. Nó de Lista Ligada
|
|
|
- Mateus Mascarenhas de Lacerda
- 9 Há anos
- Visualizações:
Transcrição
1 Lista Ligada Estrutura com nós que armazenam elementos manter referências para elementos do início e fim da lista Operações Inserir: a seguir à posição corrente Remover: na posição corrente Pesquisar: por conteúdo ou por posição first last Listas - 1 package weiss.nonstandard; Nó de Lista Ligada // Basic node stored in a linked list // Note that this class is not accessible outside // of package weiss.nonstandard class ListNode public ListNode( Object theelement ) this( theelement, null ); public ListNode( Object theelement, ListNode n ) element = theelement; next = n; public Object element; public ListNode next; Listas - 2 Listas-1
2 Nós: inserção e remoção Nó da lista Class ListNode Object element; ListNode next; Inserir a seguir ao nó corrente tmp = new ListNode(); tmp.element = x; tmp.next = current.next; current.next = tmp; ou current.next = new ListNode(x, current.next); Apagar a seguir ao nó corrente current.next = current.next.next; Listas - 3 Nós cabeçalho e iteradores Nós de cabeçalho Usados para evitar tratar como casos especiais a inserção e remoção no primeiro lugar da lista Garantem que cada nó da lista tem sempre um nó anterior Percorrer a lista Aplicação manipula referências para nós da lista não pode garantir-se que as referências são válidas Lista mantém a posição corrente e acesso é por métodos garante-se consistência das referências só uma visita à lista Iteradores permitem manter posição corrente independente da lista Listas - 4 Listas-2
3 Nó de lista duplamente ligada * This is the doubly-linked list node. private static class Node public Node( Object d, Node p, Node n ) data = d; prev = p; next = n; public Object data; public Node prev; public Node next; Listas - 5 package weiss.util; * LinkedList class implements a doubly-linked list. public class LinkedList extends AbstractCollection implements List private static final Node NOT_FOUND = null; private int thesize; private Node beginmarker; private Node endmarker; private int modcount = 0; Listas - 6 Listas-3
4 * Construct an empty LinkedList. public LinkedList( ) clear( ); * Construct a LinkedList with same items as another Collection. public LinkedList( Collection other ) clear( ); Iterator itr = other.iterator( ); while( itr.hasnext( ) ) add( itr.next( ) ); Listas - 7 * Returns the number of items in this collection. the number of items in this collection. public int size( ) return thesize; * Tests if some item is in this collection. x any object. true if this collection contains an item equal to x. public boolean contains( Object x ) return findpos( x )!= NOT_FOUND; Listas - 8 Listas-4
5 * Returns the position of first item matching x in this collection, * or NOT_FOUND if not found. x any object. the position of first item matching x in this collection, * or NOT_FOUND if not found. private Node findpos( Object x ) for( Node p = beginmarker.next; p!= endmarker; p = p.next ) if( x == null ) if( p.data == null ) return p; else if( x.equals( p.data ) ) return p; return NOT_FOUND; Listas - 9 * Adds an item to this collection, at the end. public boolean add( Object x ) addlast( x ); return true; * Adds an item to this collection, at specified position. * Items at or after that position are slid one position higher. public void add( int idx, Object x ) Node p = getnode( idx ); Node newnode = new Node( x, p.prev, p ); newnode.prev.next = newnode; p.prev = newnode; thesize++; modcount++; Listas - 10 Listas-5
6 * Adds an item to this collection, at front. * Other items are slid one position higher. x any object. public void addfirst( Object x ) add( 0, x ); * Adds an item to this collection, at end. x any object. public void addlast( Object x ) add( size( ), x ); Listas - 11 * Returns the first item in the list. NoSuchElementException if the list is empty. public Object getfirst( ) if( isempty( ) ) throw new NoSuchElementException( ); return getnode( 0 ).data; * Returns the last item in the list. NoSuchElementException if the list is empty. public Object getlast( ) if( isempty( ) ) throw new NoSuchElementException( ); return getnode( size( ) - 1 ).data; Listas - 12 Listas-6
7 * Removes the first item in the list. the item was removed from the collection. NoSuchElementException if the list is empty. public Object removefirst( ) if( isempty( ) ) throw new NoSuchElementException( ); return remove( getnode( 0 ) ); * Removes the last item in the list. the item was removed from the collection. NoSuchElementException if the list is empty. public Object removelast( ) if( isempty( ) ) throw new NoSuchElementException( ); return remove( getnode( size( ) - 1 ) ); Listas - 13 * Removes an item from this collection. x any object. true if this item was removed from the collection. public boolean remove( Object x ) Node pos = findpos( x ); if( pos == NOT_FOUND ) return false; else remove( pos ); return true; * Returns the item at position idx. public Object get( int idx ) return getnode( idx ).data; Listas - 14 Listas-7
8 * Changes the item at position idx. idx the index to change. newval the new value. the old value. IndexOutOfBoundsException if index is out of range. public Object set( int idx, Object newval ) Node p = getnode( idx ); Object oldval = p.data; p.data = newval; return oldval; Listas - 15 * Gets the Node at position idx, which must range from 0 to size( ). private Node getnode( int idx ) Node p; if( idx < 0 idx > size( ) ) throw new IndexOutOfBoundsException( "getnode index: " + idx + "; size: " + size( ) ); if( idx < size( ) / 2 ) p = beginmarker.next; for( int i = 0; i < idx; i++ ) p = p.next; else p = endmarker; for( int i = size( ); i > idx; i-- ) p = p.prev; return p; Listas - 16 Listas-8
9 * Removes an item from this collection. idx the index of the object. the item was removed from the collection. public Object remove( int idx ) return remove( getnode( idx ) ); * Removes the object contained in Node p. p the Node containing the object. the item was removed from the collection. private Object remove( Node p ) p.next.prev = p.prev; p.prev.next = p.next; thesize--; modcount++; return p.data; Listas - 17 * Change the size of this collection to zero. public void clear( ) beginmarker = new Node( "BEGINMARKER", null, null ); endmarker = new Node( "ENDMARKER", beginmarker, null ); beginmarker.next = endmarker; thesize = 0; modcount++; Listas - 18 Listas-9
10 * Obtains an Iterator object used to traverse the collection. an iterator positioned prior to the first element. public Iterator iterator( ) return new LinkedListIterator( 0 ); * Obtains a ListIterator object used to traverse the collection bidirectionally. an iterator positioned prior to the requested element. idx the index to start the iterator. Use size() to do complete * reverse traversal. Use 0 to do complete forward traversal. public ListIterator listiterator( int idx ) return new LinkedListIterator( idx ); Listas - 19 LinkedListIterator private class LinkedListIterator implements ListIterator private Node current; private Node lastvisited = null; private boolean lastmovewasprev = false; private int expectedmodcount = modcount; public LinkedListIterator( int idx ) current = getnode( idx ); public boolean hasnext( ) if( expectedmodcount!= modcount ) throw new ConcurrentModificationException( ); return current!= endmarker; Listas - 20 Listas-10
11 LinkedListIterator public Object next( ) if(!hasnext( ) ) throw new NoSuchElementException( ); Object nextitem = current.data; lastvisited = current; current = current.next; lastmovewasprev = false; return nextitem; public boolean hasprevious( ) if( expectedmodcount!= modcount ) throw new ConcurrentModificationException( ); return current!= beginmarker.next; Listas - 21 LinkedListIterator public void remove( ) if( expectedmodcount!= modcount ) throw new ConcurrentModificationException( ); if( lastvisited == null ) throw new IllegalStateException( ); LinkedList.this.remove( lastvisited ); lastvisited = null; if( lastmovewasprev ) current = current.next; expectedmodcount++; Listas - 22 Listas-11
12 LinkedListIterator public Object previous( ) if( expectedmodcount!= modcount ) throw new ConcurrentModificationException( ); if(!hasprevious( ) ) throw new NoSuchElementException( ); current = current.prev; lastvisited = current; lastmovewasprev = true; return current.data; Listas - 23 Listas-12
Tabelas de Dispersão. Tabela de Dispersão
Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão aberta e dispersão fechada. Teste quadrático. Desempenho de tabelas de dispersão. Interface de tabela de dispersão.
Orientação a Objetos AULA 09
Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este
Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho
Coleções em Java Prof. Gustavo Willam Pereira ENG10082 Programação II Créditos: Prof. Clayton Vieira Fraga Filho Introdução O que é uma coleção? Um objeto que agrupa múltiplos elementos em uma única unidade
Pilhas Filas e Listas
Pilhas Filas e Listas Sumário Pilha: interface, aplicações e implementação Fila: interface, aplicações e implementação Lista Ligada: interface, aplicações e implementação Pilha Estrutura LIFO (last in,
Capítulo VIII. Tipo Abstracto de Dados Dicionário. Acesso por Chave
Capítulo VIII Tipo Abstracto de Dados Dicionário Acesso por Chave Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 1 Interface Dicionário (K,V) (1) package datastructures; public interface Dictionary
ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA
ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande LISTA LIGADA (LINKED LIST) É uma estrutura de dados em que
ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA)
ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA (ABORDAGEM RECURSIVA) Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande QUESTÕES DE IMPLEMENTAÇÃO Implementacao
UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
API e Coleções Java. Sérgio Luiz Ruivace Cerqueira
API e Coleções Java Sérgio Luiz Ruivace Cerqueira [email protected] Java API Introdução API Endereço http://download.oracle.com/javase/6/docs/api/ API - Descrição API - Resumo API - Detalhes Coleções
Programação Orientada a Objetos
Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) [email protected]
Coleções. Prof. Marcelo Roberto Zorzan
Coleções Prof. Marcelo Roberto Zorzan Coleções Aula de Hoje Introdução Coleções podem representar estruturas de dados complexas de forma transparente para o programador. Exemplos: Músicas favoritas armazenadas
4. Listas, Pilhas, e Filas
4. Listas, Pilhas, e Filas Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 4. Listas, Pilhas, e Filas Estruturas de Dados 1 / 49 Definição de Lista (1) Uma lista é uma sequência finita
4. Listas, Pilhas, e Filas
4. Listas, Pilhas, e Filas Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 4. Listas, Pilhas, e Filas Estruturas de Dados 1 / 49 Definição de Lista (1) Uma lista é uma sequência finita
Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins
Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore
Exercício de Estrutura de dados. Java Fila
Exercício de Estrutura de dados Java Fila Obs.: Esse projeto foi um exercício realizado em sala de aula da matéria de Estrutura de dados com o Profº Frederico Augusto Siqueira Gentil Aqui está sendo relatado
Atividade 08 - Utilizando Collections - List
Atividade 08 - Utilizando Collections - List A Figura 1 mostra a árvore da hierarquia de interfaces e classes da Java Collections Framework que são derivadas da interface Collection. O diagrama usa a notação
Java Util Collections - Interfaces Interfaces definidas
Java Util Collections - Interfaces Interfaces definidas 245 Collection Raiz da hierarquia Grupo mais genérico de elementos Não garante nas implementações Duplicatas Ordenação Não possui nenhuma implementação
Coleções Avançadas. Programação Orientada a Objetos Java. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior
Coleções Avançadas Programação Orientada a Objetos Java Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Objetivos Aprender como o conceito de coleção pode ser expresso de forma genérica Examinar
Exercícios Suplementares de Programação Assembly da Cleópatra
Exercícios Suplementares de Programação Assembly da Cleópatra 1. Listas encadeadas são estruturas de dados importantíssimas em aplicações onde o volume de dados a manipular não está definido antes da execução,
JAVA COLLECTIONS API: LISTAS
COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO JAVA COLLECTIONS API: LISTAS FOZ DO IGUAÇU 2013 LISTA DE QUADROS QUADRO 1 EXEMPLO DE LIST,
Tipos de Dados Abstratos
Tipos de Dados Abstratos Algoritmos e Estruturas de Dados Verão 2012 1 Tipos Abstratos Um tipo abstrato é: um tipo genérico de dados, dos quais não se conhece os valores uma interface que define os acessos
Collections. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Collections Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira ([email protected]) Coleções em Java As coleções agrupam vários
Listas Lineares Ordenadas
Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre
Algoritmos e Estruturas de Dados. Lição n.º 4 Pilhas
Algoritmos e Estruturas de Dados Lição n.º 4 Pilhas Pilhas Implementação com arrays redimensionáveis. Implementação com listas ligadas. Aplicação: avaliação de expressões aritméticas usando o algoritmo
ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 DICIONÁRIO. Armanda Rodrigues 6 de Outubro 2011
ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 DICIONÁRIO Armanda Rodrigues 6 de Outubro 2011 2 Guardar todos os documentos da biblioteca Vamos voltar ao nosso exemplo da biblioteca Os utilizadores do sistema
Coleções POO. Prof. Marcio Delamaro
Coleções POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/54 Definição Interface Collection E - the type of elements in this collection The root interface in
CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações
CES-11 Pilhas Definição Operações Filas Definição Operações Deques Definição Operações PILHAS, FILAS E DEQUES As listas lineares admitem inserção e eliminação em qualquer posição. Pilhas, filas e deques
Árvores binárias de pesquisa
Árvores binárias de pesquisa Árvore binária de pesquisa Árvore binária, sem elementos repetidos, que verifica a seguinte propriedade: Para cada nó, todos os valores da sub-árvore esquerda são menores,
Listas Ligadas, Pilhas e Filas
Listas Ligadas, Pilhas e Filas Pedro Ribeiro DCC/FCUP 2017/2018 (baseado e/ou inspirado parcialmente nos slides de Luís Lopes e de Fernando Silva) Pedro Ribeiro (DCC/FCUP) Listas Ligadas, Pilhas e Filas
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
Java Collections Framework (JCF) Uma coleção (collection) é um objeto que agrupa vários elementos. A JCF consiste numa arquitetura para representação e manipulação de coleções. Contém: - Um conjunto de
Aplicações de vetores
O TAD Vetor O TAD Vetor extende a noção de arranjo (array) armazenando sequências de objetos arbitrários Um elemento pode ser acessado, inserido ou removido através da especificação de sua colocação (rank)
Collections Framework
Collections Framework 1 Arrays p Manipular array é bastante trabalhoso. p Dificuldades aparecem em diversos momentos: n não podemos redimensionar um array em Java; n é impossível buscar diretamente por
Estruturas de Dados Encadeadas
CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Interfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc.
KATIA LIMA FILAS RAFAEL DA SILVA REIAS JEFFERSON DA SILVA OLIVEIRA RAFFAELA LEITE SANTANA EXISTEM MUITOS EXEMPLOS DE FILA NO MUNDO REAL: UMA FILA DE BANCO; NO PONTO DE ÔNIBUS; UM GRUPO DE CARROS AGUARDANDO
Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores
Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores 1 Exercícios Exercício 1: Construtores e Testes Analise a classe Conta.java, mostrada na
Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins
Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados
Java API. Giuliana Silva Bezerra
Java API Giuliana Silva Bezerra Leitura e escrita de arquivos Java.io.file Escrita de arquivos Java.io.PrintWriter 1. Criar instância de Java.io.PrintWriter PrintWriter saida = new PrintWriter( Diretorio
Estrutura de Dados Listas
Universidade Federal da Paraíba Centro de Informática Departamento de Informática Estrutura de Dados Listas 1 Tiago Maritan [email protected] Conteúdos Abordados O Conceito de Listas Listas com Representação
Análise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype
Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I
Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais
Tabelas de Dispersão. Estrutura de Dados e Algoritmos
Tabelas de Dispersão Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão com listas e dispersão aberta. Teste quadrático. Desempenho de tabelas de dispersão. Interface
Paradigmas de Programação
Tipos Abstractos de Dados (ADT) Estruturas construídas para armazenar determinados tipos de dados e que especificam operações que permitem a manipulação desses dados. Estudaremos duas das mais simples
Programação Estruturada e Orientada a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: [email protected] [email protected]
Interfaces. Interfaces: Exemplo. ! São um mecanismo poderoso para ter bons desenhos pois permitem separar contratos das implementações
Interfaces! São um mecanismo poderoso para ter bons desenhos pois permitem separar contratos das implementações! Definem, tais como as classes, tipos mas não têm implementação! Podem declarar o constantes
Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas
Algoritmos e Estruturas de Dados Lição n.º 3 Coleções: sacos, pilhas e filas Coleções: sacos, pilhas e filas Especificação das coleções Classes iteráveis Sacos (em inglês bags) Implementação com arrays
nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){
UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------
Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas
Algoritmos e Estruturas de Dados Lição n.º 3 Coleções: sacos, pilhas e filas Coleções: sacos, pilhas e filas Especificação das coleções Classes iteráveis Sacos (em inglês bags) Implementação com arrays
Palavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
ArrayList. null. null. null ... ArrayList<Ponto2D>
FICHA PRÁTICA 4 SÍNTESE TEÓRICA LABORATÓRIO DE COLECÇÕES I ARRAYLIST Em JAVA5, tal como em algumas outras linguagens de programação por objectos, certas estruturações de objectos (colecções) são parametrizadas,
LISTA DUPLAMENTE ENCADEADA
COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO LISTA DUPLAMENTE ENCADEADA FOZ DO IGUAÇU 2013 LISTA DE QUADROS QUADRO 1 EXEMPLO DE UM NÓ PARA
Tipos Abstractos de Dados (TADs) e Java
Tipos Abstractos de Dados (TADs) e Java Neste capítulo apresentamos a metodologia de desenvolvimento dos TADs em Java, introduzimos o conceito de estrutura linear e sua implementação utilizando a estrutura
Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java
Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão
Lista encadeada class No { Coleções. Enumeration. Lista encadeada (continuação) Enumeration Exemplo usando a classe Lista anterior
Coleções Retirado do Tutorial Java class Lista { No inicio = null; Lista encadeada class No { void insereinicio(object obj) { No n = new No(obj, inicio); inicio = n; Object obj; No prox; No(Object obj,
