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

Slides:



Advertisements
Apresentações semelhantes
Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
Advertisements

TAD Deque ATAI.
Estrutura de Dados e Algoritmos e Programação e Computadores II
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.
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
Tipos Especiais de Listas
Pilhas Profa. Nádia Félix.
Listas Simplesmente Encadeadas
Tipos Especiais de Listas
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 -
Estruturas de Dados I Segundo Período de 2008 Gabarito da Primeira Prova.
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 -
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
Tratamento de exceções em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Estrutura de Dados (DPADF 0056)
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.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO.
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal
INF1007: Programação 2 8 – Listas Encadeadas
Orientação a Objetos - Programação em C++
Fundamentos de Programação 1
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
Estrutura de dados Pilhas e filas
Unidade IV– Relacionamento entre Objetos
FUNDAMENTO DE PROGRAMAÇÃO
IP – Repetições Prof. Eduardo Falcão.
UNIDADE 7 Tipos estruturados
Programação Orientada a Objetos
INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO
Programação Orientada a Objetos
Tipos de Arquivos Arquivos podem armazenar caracteres (arquivo texto) ou bytes (arquivos binários); Na prática, arquivos textos são abertos por editores.
Algoritmos e Programação MC102
Listas Encadeadas.
Elaborando as Interfaces Aulas 37, 38 e 39.
Remote Method Invocation
Organização básica de arquivos
Entrada e Saída de Dados com Arquivos – Java
Ementário Noções de hardware e software. Conceitos Fundamentais.
Estruturas de Dados Dinâmicas
Programação Orientada a Objetos*
Estruturas de Dados aula 4
Função de buscar elemento na lista simplesmente encadeada
Linguagem de Programação II
Programação Orientada a Objetos*
3.1.7 Variáveis de Classe e Instância
Laboratório I Mateus Raeder.
Prof. Rafael Mesquita Pilha Prof. Rafael Mesquita
Filas Prof. Kariston Pereira
Laboratório I Mateus Raeder.
Prof. Rafael Mesquita Fila Prof. Rafael Mesquita
Filas.
ALGORITMOS.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
Ordenando Coleções A Classe Collections.
A interface java.util.List
RESULUÇÃO DOS EXERCÍCIOS E
Percorrendo coleções com Iterator
Transcrição da apresentação:

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

Programação II – Prof. Mateus Raeder Criando um objeto Objeto é uma instância de uma classe; Usamos o operador new para criar um objeto. ContaCorrente minhaConta; minhaConta = new ContaCorrente ( ); Variável que conterá uma referência a um objeto Criação do objeto ContaCorrente minhaConta = new ContaCorrente ( );

Programação II – Prof. Mateus Raeder Garbage Collection String str = “Primeiro espaço”; System.out.println (“Usando memória original: “+str); str = “Outro espaço”; System.out.println (“Usando outro espaço de memória: “+str); str Primeiro espaço Outro espaço Área de memória liberada pelo Garbage Collection System.gc(); Não obriga a limpar, mas “pede” para que o Garbage Collection limpe se possível

Programação II – Prof. Mateus Raeder Listas: Tipo de Armazenamento O tipo de armazenamento de uma lista linear pode ser classificado de acordo com a posição relativa (sempre contígua ou não) na memória de dois nós consecutivos na lista. Lista linear com alocação seqüencial de memória –Nós em posições contíguas de memória –Geralmente representado por arrays –Útil para implementar filas e pilhas (variáveis para controlar fim e início)

Programação II – Prof. Mateus Raeder Listas: Tipo de Armazenamento Lista linear com alocação encadeada –Posições de memória são alocadas a medida que são necessárias –Nós encontram-se aleatoriamente dispostos na memória e são interligados por ponteiros, que indicam a próxima posição da tabela Nós precisam de um campo a mais: campo que indica o endereço do próximo nó.

Programação II – Prof. Mateus Raeder Listas Simplesmente Encadeadas Uma lista simplesmente encadeada é uma seqüência de objetos alocados dinamicamente, onde cada objeto faz referência ao seu sucessor na lista Lista encadeada básica: –possui variável firstNode que referencia para o primeiro elemento da lista –cada Objeto refere a seu sucessor –ultimo elemento contém a referência null (para indicar que não referencia nenhum outro). Ineficiente: se queremos inserir um elemento no final da lista, temos que localizar o último elemento: para tanto é necessário percorrer todos os elementos da lista.

Programação II – Prof. Mateus Raeder Lista Encadeada Básica Node datanext... null final de lista Apontador para o primeiro nó da lista firstNode

Programação II – Prof. Mateus Raeder Lista encadeada com referência ao último elemento da lista Como tornar mais eficiente: –utilizar uma segunda variável, chamada lastNode, que referencia o último elemento da lista. –eficiência obtida a custa do espaço adicional Apontador para o primeiro nó da lista... firstNode Apontador para o último nó da lista lastNode null final de lista

Programação II – Prof. Mateus Raeder Classe Node public class Node { private String data; private Node nextNode; 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){ data = element; } public Node getNext() { return nextNode; } public void setNext(Node node) { nextNode = node; } } Node datanextNode

Programação II – Prof. Mateus Raeder Operações sobre lista –public boolean isEmpty() verifica se a lista está vazia –public void insertAtFront( String element ) insere o elemento na frente da lista –public void insertAtBack( String element ) insere o elemento no final da lista –public String removeFromFront() remove e retorna o primeiro elemento da lista

Programação II – Prof. Mateus Raeder Operações sobre lista –public String removeFromBack() remove e retorna o último elemento da lista –public String getFirst() retorna o primeiro elemento da lista, sem removê-lo –public String getLast() remove e retorna o último elemento da lista, sem removê-lo –public void print() exibe o conteúdo da lista

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 boolean isEmpty () { return firstNode == null; }

Programação II – Prof. Mateus Raeder Class List (2/6) public String getFirst () throws UnderflowException { if (isEmpty()) throw new UnderflowException(); return firstNode.getData(); } public String getLast () throws UnderflowException { if (isEmpty()) throw new UnderflowException(); return lastNode.getData(); }

Programação II – Prof. Mateus Raeder Class List (3/6) public void insertAtFront (String insertItem) { if (isEmpty()) { firstNode = lastNode = new Node(insertItem); } else { firstNode = new Node(insertItem, firstNode); } } public void insertAtBack (String insertItem) { if (isEmpty()) { firstNode = lastNode = new Node(insertItem); } else { lastNode.setNext(new Node(insertItem)); lastNode = lastNode.getNext(); } }

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(); } return removedItem; }

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 current = firstNode; while (current.getNext() != lastNode) { current = current.getNext(); } lastNode = current; current.setNext(null); } return removedItem; }

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"); } }

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

Programação II – Prof. Mateus Raeder Pilha (Stack)

Programação II – Prof. Mateus Raeder Pilhas (Stack) Operações sobre Pilhas: –public boolean isEmpty() verifica se a pilha está vazia –public void push( String element ) insere o nó no topo da pilha –public String pop() retorna e remove o nó do topo da pilha –public String getTop () retorna o nó do topo da pilha, sem removê-lo –public void print() exibe todos os nós da pilha

Programação II – Prof. Mateus Raeder Pilha public class Stack { private Node top; public Stack() { } public boolean isEmpty () { return (top == null); } public String getTop () throws UnderflowException { if (isEmpty()) { throw new UnderflowException(); } else { return top.getData(); } }

Programação II – Prof. Mateus Raeder Pilha public void push (String insertItem) { Node n = new Node(insertItem); n.setNext(top); top = n; } public String pop () throws UnderflowException { if (isEmpty()) { throw new UnderflowException(); } Node ret = top; top = top.getNext(); return ret.getData(); }

Programação II – Prof. Mateus Raeder Pilha public void print () { if (isEmpty()) { System.out.println("Stack Empty "); } else { Node current = top; while (current != null) { System.out.println (current.getData().toString()); current = current.getNext(); } System.out.println("\n"); } } }

Programação II – Prof. Mateus Raeder Testando a Pilha public class StackTest { public static void main(String args[]) { Stack stack = new Stack(); stack.push("a"); stack.push("b"); stack.push("c"); stack.push("d"); stack.print(); try { String removedEl = null; while (!stack.isEmpty()) { removedEl = stack.pop(); System.out.println(removedEl.toString() + " popped"); } } catch (UnderflowException e) { System.out.println(e.toString()); }

Programação II – Prof. Mateus Raeder Filas (Queue)

Programação II – Prof. Mateus Raeder Operações sobre Filas (Queue) –public boolean isEmpty() verifica se a fila está vazia –public void enqueue( String element ) insere o elemento no final da fila –public String dequeue() remove e retorna o primeiro elemento da fila –public String getFirst() retorna o primeiro elemento da fila, sem removê-lo –public void print() exibe o conteúdo da fila

Programação II – Prof. Mateus Raeder Fila public class Queue { private Node firstNode; private Node lastNode; public boolean isEmpty () { return firstNode == null; } public String getFirst () throws UnderflowException { if (isEmpty()) throw new UnderflowException(); return firstNode.getData(); }

Programação II – Prof. Mateus Raeder Fila public void print () { if (isEmpty()) { System.out.println("Empty Queue"); } else { Node current = firstNode; while (current != null) { System.out.print(current.getData().toString() + ", "); current = current.getNext(); } System.out.println("\n"); } }

Programação II – Prof. Mateus Raeder Fila public void enqueue (String insertItem) { if (isEmpty()) { firstNode = lastNode = new Node(insertItem); } else { lastNode.setNext(new Node(insertItem)); lastNode = lastNode.getNext(); } }

Programação II – Prof. Mateus Raeder Fila public String dequeue () throws UnderflowException { if (isEmpty()) { throw new UnderflowException(); } String removedItem = firstNode.getData(); if (firstNode == lastNode) firstNode = lastNode = null; else firstNode = firstNode.getNext(); return removedItem; }

Programação II – Prof. Mateus Raeder Testa Fila public class QueueTest { public static void main ( String args[] ) { Queue queue = new Queue(); queue.enqueue( "1" ); queue.enqueue( "2" ); queue.enqueue( "3" ); queue.enqueue( "4" ); queue.print(); try { Object removedEl = null; while (!queue.isEmpty()) { removedEl = queue.dequeue(); System.out.println( removedEl.toString() + " dequeued" ); } catch ( UnderflowException e ) { e.printStackTrace(); }