Escolar Documentos
Profissional Documentos
Cultura Documentos
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
1
Lista linear
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
2
Lista linear sequencial
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
3
Lista linear encadeada/ligada
Alocação dinâmica
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
4
Criando um objeto
• Objeto é uma instância de uma classe;
• Usamos o operador new para criar um objeto.
Variável que conterá uma
referência a um objeto
ContaCorrente minhaConta;
minhaConta = new ContaCorrente ( );
Criação do objeto
element next
Node
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
6
Classe Node
public class Node {
private String element; //Elemento do Node é uma string
private Node next; //Referência para um objeto Node
//Cria um node com um elemento e uma referência para o próximo node
public Node(String s, Node n){
element = s;
next = n;
}
//Cria um node com um elemento e uma referência null
public Node(String element) {
this(element, null);
}
//Retorna o elemento deste node
public String getElement(){ return element; }
//Retorna a referência para o próximo node
public Node getNext(){ return next; }
//Define o elemento deste node
public void setElement(String newElem){ element = newElem; }
//Define a referência para o próximo node
public void setNext(Node newNext){ next = newNext; }
}
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
7
Lista simplesmente encadeada/ligada
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
8
Lista simplesmente encadeada/ligada
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
9
Operações sobre listas encadeadas
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
10
Operações sobre listas encadeadas
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
11
Antes de começarmos…
Supondo a existência da classe JLinkedList, desenhe a lista criada
através do código abaixo (a saída do programa):
public static void main(String args[]) {
JLinkedList lista = new JLinkedList();
try {
lista.insertFirst(new Node("D"));
lista.insertFirst(new Node("A"));
lista.insertFirst(new Node("B"));
lista.insertLast(new Node("S"));
lista.insertLast(new Node("C"));
lista.removeFirst(); //pode lançar UnderflowException
lista.removeLast(); //pode lançar UnderflowException
} catch (UnderflowException e) {
System.out.println("ERRO: Impossível remover!");
e.printStackTrace();
}
lista.show();
}
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
12
Lista encadeada/ligada
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
13
Classe UnderflowException
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
14
isEmpty(), getFirst() e getLast()
public boolean isEmpty() {
return head == null;
}
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
16
Inserção no final da lista
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
17
Remoção no início da lista
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
18
Remoção no final da lista
public Node removeLast() throws UnderflowException {
if (isEmpty()) {
throw new UnderflowException();
}
Node removedItem = tail;
if (head == tail) {
head = tail = null;
} else {
Node current = head;
while (current.getNext() != tail) {
current = current.getNext();
}
tail = current;
current.setNext(null);
}
size--;
return removedItem;
}
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
19
Mostrar/exibir elementos da lista
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
20
Atividade
Considerando que a lista encadeada/ligada tenha apenas a variável
head para o primeiro elemento, como apresentado abaixo,
implemente as operações isEmpty(), getFirst(), getLast(),
insertFirst(), insertLast(), removeFirst(), removeLast(), show().
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
21
Fim!
Estruturas de Dados
Tecnologia em Análise e Desenvolvimento de Sistemas
Fatec Zona Leste
22