A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO."— Transcrição da apresentação:

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

2 Link Copy 2 bit.do/facema-estrdados

3 Listas Simplesmente Encadeadas 3

4 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 5 Cada nó da lista deverá conter, além de informações a seu respeito, uma referência para o nó seguinte.

6 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

7 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 ∅.

8 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

9 Implementação 9

10 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

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

12 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)

13 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

14 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.

15 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 16 SimpleList (Métodos Auxiliares)

17 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

18 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 19 SimpleList (Métodos Principais)

20 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 21 Implementação

22 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

23 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

24 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++; }

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

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

27 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 28 Implementação

29 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

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

31 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); } ?

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

33 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 34 Implementação

35 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 1. 35 Unidade II

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

37 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; }

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

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

40 40 Implementação

41 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 2. 41 Unidade II

42 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

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

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

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


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

Apresentações semelhantes


Anúncios Google