Universidade do Vale do Rio dos Sinos - São Leopoldo -

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
TAD Deque ATAI.
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Listas Ligadas – Conceitos Avançados
Erros A Evitar Redundância de Programação public void insere( Priorizavel obj ) throws listaVaziaException; Lançamento de exceções.
Slides: Prof. João Fabro UTFPR - Curitiba
2002/2003 Programação Orientada para Objectos 1 Aula 3 Utilização de listas Melhorando a implementação das listas e iteradores Reflexão sobre interfaces.
LISTAS DUPLAMENTE ENCADEADAS
Lista Encadeada Circular Lista Duplamente Encadeada
Orientação a Objetos e Java Graduação em Ciência da Computação
Tipos Especiais de Listas
Pilhas Profa. Nádia Félix.
Listas Simplesmente Encadeadas
Tipos Especiais de Listas
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Curso de Linguagem Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Estrutura de Controle em JAVA
Exceções Profa. Patrícia A. Jaques Alterada por Leandro Tonietto abr-15.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Estruturas de Dados I Segundo Período de 2008 Gabarito da Primeira Prova.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da profa. Patrícia Jaques.
Programação e Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Exceções.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da profa. Renata Galante.
Associação. 2 Desafio – Aula class Aluno { 2. private String nome; 3. private float nota; 4. public Aluno(String nome, float nota){ 5. this.nome.
Listas Duplamente Encadeadas Profs Prog2 e Lab2 Unisinos.
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
PROGRAMANDO EM JAVA Dilvan Moreira (baseado no livro Big Java)
Programação em Java RMI - Remote Method Invocation Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Programação em Java Tratamento de Exceções Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel.
Estrutura de Dados (DPADF 0056) Aula 7 – Encadeamento de Memória Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.
Estrutura de Dados (DPADF 0056) Aula 8 – Estr. Clássicas - Lista Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.
Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
INF1007: Programação 2 8 – Listas Encadeadas
Polimorfismo e suas aplicações em C++.
Programação Orientada a Objetos
Capítulo II – Listas Lineares Gerais
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
INF1007 – Programação 2 9 – Pilhas
INF1007: Programação 2 6 – Ordenação de Vetores
Java: Interfaces Alcides Calsavara.
Estrutura de dados Pilhas e filas
Singleton e Template Method
Orientação a Objetos - Programação em C++
Listas Encadeadas.
Estruturas de Dados Dinâmicas
Função de buscar elemento na lista simplesmente encadeada
Laboratório I Mateus Raeder.
Rosemary Silveira Filgueiras Melo
Prof. Rafael Mesquita Fila Prof. Rafael Mesquita
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
Linguagem Concorrente com Compartilhamento de Variáveis
RESULUÇÃO DOS EXERCÍCIOS E
Programação de Computadores II
Transcrição da apresentação:

Universidade do Vale do Rio dos Sinos - São Leopoldo - Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -

Listas Duplamente Encadeadas Cada nó possui dois ponteiros: Vantagem: simplifica certas operações e permite percorrer a lista nos dois sentidos. Desvantagem: gasta mais espaço do que a simplesmente encadeada (mais um ponteiro em cada nó) e pode tornar mais complexas certas operações. previousNode data nextNode nó Programação II – Prof. Mateus Raeder 2

Lista encadeada com referência ao ultimo elemento da lista Apontador para o primeiro nó da lista Apontador para o último nó da lista firstNode lastNode null início de lista null final de lista Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Classe Node public class Node { private String data; private Node nextNode; private Node previousNode; public Node( String element ) { this( element, null ); } public Node( String element, Node node ){ data = element; nextNode = node; public String getData() { return data; public void setData (String element) { Programação II – Prof. Mateus Raeder 4

Programação II – Prof. Mateus Raeder Classe Node public Node getNext() { return nextNode; } public void setNext(Node n) { nextNode = n; public Node getPrevious() { return previousNode; public void setPrevious(Node n) { previousNode = n; Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Class List (1/6) public class List { private Node firstNode; private Node lastNode; private String name; public List() { this("list"); } public List(String listName) { name = listName; firstNode = lastNode = null; public String getFirst() throws UnderflowException { if (isEmpty()) throw new UnderflowException(); return firstNode.getData(); public String getLast() throws UnderflowException { return lastNode.getData(); public boolean isEmpty() { return firstNode == null; Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Class List (2/6) public void insertAtFront (String insertItem) { Node n = new Node(insertItem); if (isEmpty()) { firstNode = lastNode = n; } else { firstNode.setPrevious(n); n.setNext(firstNode); firstNode = n; } firstNode lastNode n b c d e a Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Class List (3/6) public void insertAtBack (String insertItem) { Node n = new Node(insertItem); if (isEmpty()) { firstNode = lastNode = n; } else { lastNode.setNext(n); n.setPrevious(lastNode); lastNode = n; } firstNode lastNode b c d e n x Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Class List (4/6) public String removeFromFront() throws UnderflowException { if (isEmpty()) { throw new UnderflowException(); } String removedItem = firstNode.getData(); if (firstNode == lastNode) { firstNode = lastNode = null; } else { firstNode = firstNode.getNext(); firstNode.setPrevious(null); return removedItem; firstNode lastNode b c d e Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Class List (5/6) public String removeFromBack() throws UnderflowException { if (isEmpty()) { throw new UnderflowException(); } String removedItem = lastNode.getData(); if (firstNode == lastNode) { firstNode = lastNode = null; } else { Node penultimo = lastNode.getPrevious(); lastNode = penultimo; lastNode.setNext(null); return removedItem; firstNode penultimo lastNode b c d e Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Class List (6/6) public void print() { if (isEmpty()) { System.out.println("Empty " + name); } else { System.out.print("The " + name + " is: "); Node current = firstNode; while (current != null) { System.out.print(current.getData().toString() + " "); current = current.getNext(); } System.out.println("\n"); firstNode =null lastNode current 2 3 4 5 Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Testando a lista public class ListTest { public static void main( String args[] ) { List list = new List( ); list.insertAtBack("1"); list.insertAtBack("2"); list.insertAtBack("3"); list.insertAtBack("4"); list.print(); try { Object removedEl = list.removeFromFront(); System.out.println( removedEl.toString() + " removed" ); removedEl = list.removeFromFront(); removedEl = list.removeFromBack(); } catch ( UnderflowException e ) { e.printStackTrace(); } Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Exercício 1) Na classe List (implementação de lista duplamente encadeada), implementar um método com a seguinte assinatura: “public boolean insertBefore (String val1, String val2)”. Este método deve inserir na lista um nó com dado val2 na posição anterior ao nó que contenha o dado val1. 2) Implemente na classe List um método que insere um nó na k-ésima posição (firstNode é a posição 0) 3) Implemente um método que remova um nó que contém determinada informação (String o, por ex.) Programação II – Prof. Mateus Raeder