Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO.

Slides:



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

Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Listas com Ponteiros Listas encadeadas Listas circulares.
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Lista Encadeada Circular Lista Duplamente Encadeada
Tipos Especiais de Listas
Lista encadeada Representar um grupo de dados.
Listas Simplesmente Encadeadas
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 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Estruturas de Dados Dinâmicas IF672 - Algoritmos e Estruturas de Dados.
Estrutura de dados Pilhas e filas
Listas Duplamente Encadeadas Profs Prog2 e Lab2 Unisinos.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
INE5408 Estruturas de Dados Listas Encadeadas - Pilhas encadeadas - Filas encadeadas - Listas duplamente encadeadas.
Estrutura de Dados (DPADF 0056) Aula 5 – Estr. Clássicas - Fila Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
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.
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.
INE5408 Estruturas de Dados
Estruturas de Dados Aula 2: Estruturas Estáticas
INF1007: Programação 2 8 – Listas Encadeadas
Polimorfismo e suas aplicações em C++.
Introdução à Programação
Vetores e Matrizes em C/C++
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Introdução Java.
INF1007: Programação 2 2 – Alocação Dinâmica
Programação Orientada a Objetos
INE5408 Estruturas de Dados
Introdução Java.
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
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
Java: Interfaces Alcides Calsavara.
Estrutura de dados Pilhas e filas
FUNDAMENTO DE PROGRAMAÇÃO
Criação e manipulação de objetos
Árvores.
Listas Encadeadas.
Desenvolvimento de Sistemas Orientados a Objetos
Não tem introdução vcs vai começar aprendendo: isso sempre é o que vem em primeiro no código: using System;  usa o sistema inicia ele using System.Collections.Generic;
Estruturas de Dados Dinâmicas
Wrappers.
Rosemary Silveira Filgueiras Melo
Função de buscar elemento na lista simplesmente encadeada
3.2 Sobrecarga de Métodos (Overloading)
Programação Orientada a Objetos
Orientação a Objetos - Programação em C++
Rosemary Silveira Filgueiras Melo
Prof. Rafael Mesquita Fila Prof. Rafael Mesquita
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Filas.
Tipos Primitivos de Dados
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
Coleções em Java 1.
Ordenando Coleções A Classe Collections.
A interface java.util.List
CALCULADORA CARACTERE E VARIÁVEIS COMPOSTAS OU VETORES EM JAVA
Constantes, Variáveis e Memória
RESULUÇÃO DOS EXERCÍCIOS E
Percorrendo coleções com Iterator
Transcrição da apresentação:

Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO

Link Copy 2 bit.do/facema-estrdados

Listas Simplesmente Encadeadas 3

Introdução Uma Lista Encadeada, em sua forma mais simples, é uma coleção de nós que juntos formam uma “lista linear”. Cada nó é um objeto que armazena uma referência para seu conteúdo e uma referência para o próximo nó. A referência que aponta para o próximo nó é chamada de NEXT. 4 Unidade II

5 Cada nó da lista deverá conter, além de informações a seu respeito, uma referência para o nó seguinte.

Listas Simplesmente Encadeadas Introdução A principal vantagem de se utilizar listas encadeadas está no fato de não ser preciso reservar um tamanho fixo. Nas operações de inserção/remoção nas extremidades não é necessário deslocamentos na lista. Entretanto, um nó da lista encadeada ocupa mais espaço em memória do que um elemento de um “vetor”. 6 Unidade II

Listas Simplesmente Encadeadas Introdução 7 Unidade II head TIM CNTCAX Ø THE COD tail Os ponteiros next de cada nó são representados como setas. O objeto null é denotado como ∅.

Listas Simplesmente Encadeadas Introdução A referência NEXT dentro de um nó pode ser vista como uma ligação / ponteiro para outro nó. O primeiro e o ultimo nó de uma lista encadeada são normalmente chamados de cabeça (head) e cauda (tail). Identifica-se a cauda por ser o nó que possui uma referência next nula, que indica o fim da lista. 8 Unidade II

Implementação 9

Listas Simplesmente Encadeadas Implementação Para implementar uma lista simplesmente encadeada, será definido uma classe Node. A qual especifica o tipo dos objetos que serão armazenados nos nós da lista. Aqui, assume-se que os elementos são Strings. 10 Unidade II

Listas Simplesmente Encadeadas Implementação Criar um “projeto” (caso não o tenha ainda) : – ED Criar um “pacote” : – br.edu.facema.aulas.estr02 Classes: – Node – SimpleList – TestListaSimples 11 Unidade II

Listas Simplesmente Encadeadas Considerações – Representa um nó - criado a partir da classe Node. – Referência que “aponta” para o próximo nó da lista ( getNext() ou setNext() ). size: – Variável que “retorna” a quantidade de nós na lista. Quando um novo objeto é adicionado na lista, é incrementado +1 a variável e decrementado -1 quando um objeto é removido. 12 Unidade II ADS (next)

Listas Simplesmente Encadeadas Considerações head: – Objeto que representa o primeiro nó da lista. tail: – Objeto que representa o último nó da lista. 13 Unidade II

Listas Simplesmente Encadeadas – Classe que irá representar os Nodos 14 Unidade II public class Node { // Assumimos que os elementos são strings private String element; private Node next; public Node(String element) { this.element = element; } // Métodos getters e setters } Referência para um objeto de seu próprio tipo.

Listas Simplesmente Encadeadas Implementação – Classe que irá representar a Lista de Nodos 15 Unidade II public class SimpleList { // Nodo cabeça da lista private Node head; // Nodo cauda da lista private Node tail; // Número de nodos da lista private int size; public SimpleList() { head = null; tail = null; size = 0; } }

16 SimpleList (Métodos Auxiliares)

Listas Simplesmente Encadeadas Métodos Auxiliares size(): // Retorna int – Retorna o número de elementos armazenados. isEmpty(): // Retorna boolean – Indica se há ou não elementos na lista. 17 Unidade II

Listas Simplesmente Encadeadas Métodos Auxiliares – Deve ser criado dentro da classe SimpleList. 18 Unidade II // Retorna a quantidade de objetos na lista public int size() { return size; } // Informa se a lista está vazia public boolean isEmpty() { return size == 0; }

19 SimpleList (Métodos Principais)

Listas Simplesmente Encadeadas Métodos Principais adicionarInicio(object): – Insere um elemento no início. adicionarFim(object): – Insere um elemento no fim. removerComeco(): // Retorna Object – Remove e retorna o primeiro elemento. removerFinal(): // Retorna Object – Remove e retorna o último elemento. 20 Unidade II

21 Implementação

Listas Simplesmente Encadeadas Inserção no inicio: adicionaInicio(...) Passo-a-passo: – Criar um novo nó. – Definir que a referência Next do novo nó aponte para o objeto head. – Definir head para ser o novo nó. – Se a variável size for igual a ZERO, o novo nó passa a ser também o objeto tail. 22 Unidade II

Listas Simplesmente Encadeadas Exemplo: Inserção do início: 23 Unidade II TIM CNTCAX Ø head THE Lista vazia: head  null tail  null size  0 Ø head tail Lista com objetos: tail

Listas Simplesmente Encadeadas Inserção no início : adicionaInicio(...) – Código em Java Deve ser criado dentro da classe SimpleList 24 Unidade II public void adicionarInicio(String element) { Node no = new Node(element); no.setNext(head); head = no; if (size == 0) { // Caso a lista esteja vazia tail = no; } size++; }

Listas Simplesmente Encadeadas Inserção no início: adicionaInicio(...) – Teste 25 Unidade II public class TestListaSimples { public static void main(String[] args) { SimpleList lista = new SimpleList(); lista.adicionarInicio("Jeovane"); lista.adicionarInicio("Mario"); System.out.println(lista); } }

Listas Simplesmente Encadeadas Inserção no início: adicionaInicio(...) – Resultado 26 Unidade II [Mario, Jeovane] CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

Listas Simplesmente Encadeadas – Código em Java Deve ser criado dentro da classe SimpleList 27 Unidade II public String toString() { String s = "["; Node node = head; while (node != null) { s += node.getElement(); if (node != tail) { s += ", "; } node = node.getNext(); } return s + "]"; }

28 Implementação

Listas Simplesmente Encadeadas Inserção no final: adicionaFim (...) Passo-a-passo: – Criar um novo nó. – Atribuir null para a referência next do novo nó. – Fazer com que a referência next do objeto tail aponte para o novo nó. – Definir o novo nó como nó cauda (tail). 29 Unidade II

Listas Simplesmente Encadeadas Exemplo: Inserção do final: Lista com objetos: 30 Unidade II TIM CNTCAX Ø tail TIM CNTCAX Ø tail COD Ø Ø head

Listas Simplesmente Encadeadas Inserção no final: adicionaFim (...) – Código em Java – Deve ser criado dentro da classe SimpleList 31 Unidade II public void adicionarFim(String element) { Node no = new Node(element); } ?

Listas Simplesmente Encadeadas Inserção no final: adicionaFim (...) – Teste 32 Unidade II public class TestListaSimples { public static void main(String[] args) { SimpleList lista = new SimpleList(); // add no inicio.. lista.adicionarInicio("Jeovane"); lista.adicionarInicio("Mario"); // add no fim.. lista.adicionarFim("Pedro"); lista.adicionarFim("Eduardo"); System.out.println(lista); } }

Listas Simplesmente Encadeadas Inserção no final: adicionaFim (...) – Resultado 33 Unidade II [Mario, Jeovane, Pedro, Eduardo] CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

34 Implementação

Listas Simplesmente Encadeadas Remoção: removeComeco( ) Passo-a-Passo: – Verificar se a lista está vazia. Se estiver vazia uma mensagem de erro é lançada. Senão, o objeto é removido. 1.Antes de remover o objeto, seu conteúdo deve ser armazenado em uma variável temporária. 2.Fazer com que o nó que sucede o elemento head seja o novo nó cabeça ( head ). 3.Retornar o valor do passo Unidade II

Listas Simplesmente Encadeadas Exemplo: Remoção no início: Lista: 36 Unidade II TIM CNTCAX Ø head var temp = head size = 3 size = 2

Listas Simplesmente Encadeadas Remoção no início: removeComeco( ) – Código em Java – Deve ser criado dentro da classe SimpleList 37 Unidade II // Remove um Nodo do começo public String removerComeco() { if (isEmpty()) { throw new RuntimeException("Lista vazia"); } String temp = head.getElement(); head = head.getNext(); size--; return temp; }

Listas Simplesmente Encadeadas Remoção no início: removeComeco( ) – Teste 38 Unidade II public class TestListaSimples { public static void main(String[] args) { SimpleList lista = new SimpleList(); lista.adicionarInicio("Jeovane"); lista.adicionarInicio("Mario"); lista.adicionarInicio("Pedro"); // remove o primeiro elemento lista.removerComeco(); System.out.println(lista); } }

Listas Simplesmente Encadeadas Remoção no início: removeComeco( ) – Resultado 39 Unidade II [Mario, Jeovane] CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

40 Implementação

Listas Simplesmente Encadeadas Remoção no final : removeFinal( ) Passo-a-passo: – Verificar se a lista está vazia. Se estiver vazia uma mensagem de erro é lançada. Senão, o objeto é removido. 1.Percorrer toda a lista a partir do objeto head até o nó que antecede o objeto tail. 2.Armazenar o conteúdo do objeto tail em uma variável temporária. 3.Fazer com que o nó que antecede o elemento tail seja o novo nó cauda (tail). 4.Retornar o valor do passo Unidade II

Listas Simplesmente Encadeadas Exemplo: Remoção no final: Lista: 42 Unidade II TIM CNTCAX vvv TIM CNTCAX COD tail head COD tail Ø var temp = tail head size = 4 size = 3

Listas Simplesmente Encadeadas Remoção no final: removeFinal( ) – Deve ser criado dentro da classe SimpleList 43 Unidade II public String removerFinal() { if (isEmpty()) { throw new RuntimeException("Lista vazia"); } } ?

Listas Simplesmente Encadeadas Remoção no final: removeFinal( ) – Teste 44 Unidade II public class TestListaSimples { public static void main(String[] args) { SimpleList lista = new SimpleList(); lista.adicionarInicio("Jeovane"); lista.adicionarInicio("Mario"); lista.adicionarInicio("Pedro"); // remove o último elemento lista.removerFinal(); System.out.println(lista); } }

Listas Simplesmente Encadeadas Remoção no final: removeFinal( ) – Resultado 45 Unidade II [Pedro, Mario] CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)