Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista...

19
Ricardo Massa F. Lima [email protected] Sérgio C. B. Soares [email protected] Introdução a Estruturas de Dados: Lista AULA 10

Transcript of Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista...

Page 1: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Ricardo Massa F. [email protected]

Sérgio C. B. [email protected]

Introdução a Estruturas de Dados: Lista

AULA 10

Page 2: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas

n Uma lista (ou sequência) é uma estrutura na qual os elementos– seguem uma ordem

§ 1o elemento, 2o elemento, … N-ésimo elemento– podem se repetir

n A lista cresce/diminui dinamicamente n Ex.: Uma lista de números inteiros

5 3 9 8 5 9

cabeçacauda

Page 3: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas de inteiros em Java

1

cabeça

1

1

319

15

9 nnull

Page 4: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Como implementar a lista de inteiros em Java?

n Criar uma classe . . .

n Ideias???

Page 5: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Vamos fazer uma pequenamudança nesta representação!

1

cabeça

1

1

319

15

9 nnull

Page 6: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas de inteiros em Java

1

3

1

cabeça

1

1

319

15

9 n5

9

9 null

• Cada quadrado/retângulo é um objeto• Para cada objeto deve haver uma classe

Page 7: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas de inteiros em Java

1

3

1

cabeça

1

1

319

15

9 n5

9

9 null

• Cada quadrado/retângulo é um objeto• Para cada objeto deve haver uma classe

1

Tipo 1 de objeto

Tipo 2 de objeto

Page 8: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas de int (1/5)public class Valor {

private int valor;

public Valor (int valor) {this.valor = valor;

}

public int getValor(){return this.valor;

}

public boolean equals(Valor valor){return valor.getValor() == this.valor;

}}

Page 9: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas de int (2/5)

public class Lista {private Valor valor;private Lista proximo;public Lista () {

...

...}public void inserir(Valor valor) {...}public void remover(Valor valor) {...}

}

Page 10: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas de int (3/5)

public class Lista {private Valor valor;private Lista proximo;public Lista () {

this.valor = null;this.proximo = null;

}public void inserir(Valor valor) {...}public void remover(Valor valor) {...}

}

Page 11: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas de int (4/5)

public void inserir(Valor valor) {if (this.valor == null) {this.valor = valor;this.proximo = new Lista();

} else {this.proximo.inserir(valor);

}}

Page 12: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas de int (5/5)

public void remover(Valor valor) {if (this.valor != null) {

if (this.valor.equals(valor)) {this.valor = this.proximo.valor;this.proximo = this.proximo.proximo;

} else {this.proximo.remover(valor);

} } else {

throw new RuntimeException(“Erro”);}

Atenção: Por enquanto, vamos indicar erros assim. Mas isso vai mudar

Page 13: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Exercício (1)

n Crie a classe ListaInt no pacote aulaEstruturaDados.br.ufpe.cin.listaint conforme apresentado em salanAdicionalmente crie um método toString que

retorna os elementos da lista em um String.

n Crie uma classe Programa no mesmo pacote para testar a classe criada e imprimir a mesma usando o método toString

n Teste o programa

Page 14: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Listas de Contas

null null

creditar

debitar

Número Saldo

”763-0" 188,00

creditar

debitar

Número Saldo

"123-x" 374,78

creditar

debitar

Número Saldo

”761-7" 17,20

Page 15: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

public class ListaContas {private Conta conta;private ListaContas prox;

public ListaContas() { .this.conta = null;this.prox = null;

}

Listas de Contas: Descrição

Page 16: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

public void inserir (Conta conta) {if (this.conta == null) {this.conta = conta;this.prox = new ListaContas();

} else {this.prox.inserir(conta);

}}

Listas de Contas: Descrição

Page 17: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

public void remover(Conta c) {if (this.conta != null) {

if (this.conta.equals(c)) {this.conta = this.prox.conta;this.prox = this.prox.prox;

} else {this.prox.remover(c);

}} else {

throw new RuntimeException(“Erro”);}

}

Listas de Contas: Descrição

Page 18: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

public Conta procurar (String numero) {Conta resposta = null;if (this.conta != null) {

if (this.conta.getNumero().equals(numero)) {resposta = this.conta;

} else {resposta = this.prox.procurar(numero);

}} else {

throw new RuntimeException(“Erro”);}return resposta;

}

Listas de Contas: Descrição

Page 19: Introdução a Estruturas de Dados: Lista AULA 10if669/material/aulasNovas2016/...de Dados: Lista AULA 10 Listas n Uma lista (ou sequência) é uma estrutura na qual os elementos –

Exercício (2)

n Utilize a solução dos exercícios da última aula

www.cin.ufpe.br/~if669/material/solucoes/aula15.zip

n Crie a classe RepositorioContasLista que implementa a interface RepositorioContasutilizando uma lista de contas conforme apresentado em sala

n Altere a classe Programa para utilizar a classe RepositorioContasLista no teste

n Teste o programa