1. Aula 21 – Listas Ligadas
Norton Trevisan Roman
12 de maio de 2020
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 1 / 33
2. Listas Ligadas
Considere nosso
condom´ınio
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 2 / 33
3. Listas Ligadas
Considere nosso
condom´ınio
E se, durante a
execu¸c˜ao,
precis´assemos alocar
mais uma casa
(al´em dos limites do
condom´ınio)?
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 2 / 33
4. Listas Ligadas
Considere nosso
condom´ınio
E se, durante a
execu¸c˜ao,
precis´assemos alocar
mais uma casa
(al´em dos limites do
condom´ınio)?
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 2 / 33
5. Listas Ligadas
Considere nosso
condom´ınio
E se, durante a
execu¸c˜ao,
precis´assemos alocar
mais uma casa
(al´em dos limites do
condom´ınio)?
N˜ao haver´a espa¸co
alocado para ela no
arranjo
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 2 / 33
6. Listas Ligadas
Que fazer?
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
7. Listas Ligadas
Que fazer?
Alocar um novo
arranjo maior
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
8. Listas Ligadas
Que fazer?
Alocar um novo
arranjo maior
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
Residencia[] maior = new Residencia[3];
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
9. Listas Ligadas
Que fazer?
Alocar um novo
arranjo maior
Copiar o conte´udo do
velho nesse
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
Residencia[] maior = new Residencia[3];
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
10. Listas Ligadas
Que fazer?
Alocar um novo
arranjo maior
Copiar o conte´udo do
velho nesse
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
Residencia[] maior = new Residencia[3];
maior[0] = p.condominio[0];
maior[1] = p.condominio[1];
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
11. Listas Ligadas
Que fazer?
Alocar um novo
arranjo maior
Copiar o conte´udo do
velho nesse
Incluir a nova casa
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
Residencia[] maior = new Residencia[3];
maior[0] = p.condominio[0];
maior[1] = p.condominio[1];
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
12. Listas Ligadas
Que fazer?
Alocar um novo
arranjo maior
Copiar o conte´udo do
velho nesse
Incluir a nova casa
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
Residencia[] maior = new Residencia[3];
maior[0] = p.condominio[0];
maior[1] = p.condominio[1];
maior[2] = r3;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
13. Listas Ligadas
Que fazer?
Alocar um novo
arranjo maior
Copiar o conte´udo do
velho nesse
Incluir a nova casa
Substituir o arranjo
antigo pelo maior
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
Residencia[] maior = new Residencia[3];
maior[0] = p.condominio[0];
maior[1] = p.condominio[1];
maior[2] = r3;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
14. Listas Ligadas
Que fazer?
Alocar um novo
arranjo maior
Copiar o conte´udo do
velho nesse
Incluir a nova casa
Substituir o arranjo
antigo pelo maior
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
Residencia[] maior = new Residencia[3];
maior[0] = p.condominio[0];
maior[1] = p.condominio[1];
maior[2] = r3;
p.condominio = maior;
p.ultimo++;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
15. Listas Ligadas
Que fazer?
Alocar um novo
arranjo maior
Copiar o conte´udo do
velho nesse
Incluir a nova casa
Substituir o arranjo
antigo pelo maior
Incrivelmente
ineficiente
class Projeto {
...
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Projeto p = new Projeto(2);
p.adicionaRes(r1);
p.adicionaRes(r2);
Residencia r3 = new Residencia(cq2, null);
Residencia[] maior = new Residencia[3];
maior[0] = p.condominio[0];
maior[1] = p.condominio[1];
maior[2] = r3;
p.condominio = maior;
p.ultimo++;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 3 / 33
16. Listas Ligadas
Deveria haver um modo de simplesmente
aumentarmos o arranjo
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 4 / 33
17. Listas Ligadas
Deveria haver um modo de simplesmente
aumentarmos o arranjo
Com arranjos... n˜ao
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 4 / 33
18. Listas Ligadas
Deveria haver um modo de simplesmente
aumentarmos o arranjo
Com arranjos... n˜ao
Alternativa: Lista Ligada
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 4 / 33
19. Listas Ligadas
Deveria haver um modo de simplesmente
aumentarmos o arranjo
Com arranjos... n˜ao
Alternativa: Lista Ligada
Uma lista ligada ´e uma lista onde cada elemento –
chamado de n´o – cont´em um valor e uma referˆencia
para o elemento seguinte na lista
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 4 / 33
20. Listas Ligadas
Deveria haver um modo de simplesmente
aumentarmos o arranjo
Com arranjos... n˜ao
Alternativa: Lista Ligada
Uma lista ligada ´e uma lista onde cada elemento –
chamado de n´o – cont´em um valor e uma referˆencia
para o elemento seguinte na lista
Assim, sabendo onde est´a o primeiro elemento da lista,
podemos chegar a qualquer outro elemento
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 4 / 33
27. Listas Ligadas
Dado armazenado:
(Endere¸co de) objeto
Residencia
Criando o n´o:
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 6 / 33
28. Listas Ligadas
Dado armazenado:
(Endere¸co de) objeto
Residencia
Criando o n´o:
Temos o dado armazenado
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 6 / 33
29. Listas Ligadas
Dado armazenado:
(Endere¸co de) objeto
Residencia
Criando o n´o:
Temos o dado armazenado
E uma referˆencia para o
pr´oximo elemento
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 6 / 33
30. Listas Ligadas
Criando uma lista
simples:
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 7 / 33
31. Listas Ligadas
Criando uma lista
simples:
cabe¸ca
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 7 / 33
32. Listas Ligadas
Inserindo elemento no
in´ıcio:
cabe¸ca
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 8 / 33
33. Listas Ligadas
Inserindo elemento no
in´ıcio:
Crie o novo elemento a
ser inserido
cabe¸cael
aux
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 8 / 33
34. Listas Ligadas
Inserindo elemento no
in´ıcio:
Crie o novo elemento a
ser inserido
Fa¸ca o elemento do in´ıcio
da lista ser seu pr´oximo
cabe¸ca
el
aux
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 8 / 33
35. Listas Ligadas
Inserindo elemento no
in´ıcio:
Crie o novo elemento a
ser inserido
Fa¸ca o elemento do in´ıcio
da lista ser seu pr´oximo
Torne esse novo elemento
o novo in´ıcio da lista
cabe¸ca el
aux
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 8 / 33
36. Listas Ligadas
E se a lista j´a tiver
algo?
el2 el1
cabe¸ca
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 9 / 33
37. Listas Ligadas
E se a lista j´a tiver
algo?
el2 el1
cabe¸ca
el
aux
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 9 / 33
38. Listas Ligadas
E se a lista j´a tiver
algo?
el2 el1
cabe¸ca
el
aux
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 9 / 33
39. Listas Ligadas
E se a lista j´a tiver
algo?
el2 el1
cabe¸ca
el
aux
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
public class ListaSimples {
No cabeca;
public ListaSimples() {
this.cabeca = null;
}
public void insere(Residencia el) {
No aux = new No(el);
aux.prox = this.cabeca;
this.cabeca = aux;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 9 / 33
40. Listas Ligadas
E como podemos usar
isso?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 10 / 33
41. Listas Ligadas
E como podemos usar
isso?
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr,null);
Residencia r2 = new Residencia(cq,null);
Residencia r3 = new Residencia(cq2,null);
ListaSimples l = new ListaSimples();
l.insere(r1);
l.insere(r2);
l.insere(r3);
No n = l.cabeca;
while (n != null) {
System.out.println(n.r.casa.area());
n = n.prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 10 / 33
42. Listas Ligadas
E como podemos usar
isso?
Repare!
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr,null);
Residencia r2 = new Residencia(cq,null);
Residencia r3 = new Residencia(cq2,null);
ListaSimples l = new ListaSimples();
l.insere(r1);
l.insere(r2);
l.insere(r3);
No n = l.cabeca;
while (n != null) {
System.out.println(n.r.casa.area());
n = n.prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 10 / 33
43. Listas Ligadas
E como podemos usar
isso?
Repare!
N˜ao precisamos de
vari´avel auxiliar para
guardar o resultado de
um m´etodo
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr,null);
Residencia r2 = new Residencia(cq,null);
Residencia r3 = new Residencia(cq2,null);
ListaSimples l = new ListaSimples();
l.insere(r1);
l.insere(r2);
l.insere(r3);
No n = l.cabeca;
while (n != null) {
System.out.println(n.r.casa.area());
n = n.prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 10 / 33
44. Listas Ligadas
E como podemos usar
isso?
Repare!
N˜ao precisamos de
vari´avel auxiliar para
guardar o resultado de
um m´etodo
O computador ir´a buscar
o atributo r, de n
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr,null);
Residencia r2 = new Residencia(cq,null);
Residencia r3 = new Residencia(cq2,null);
ListaSimples l = new ListaSimples();
l.insere(r1);
l.insere(r2);
l.insere(r3);
No n = l.cabeca;
while (n != null) {
System.out.println(n.r.casa.area());
n = n.prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 10 / 33
45. Listas Ligadas
E como podemos usar
isso?
Repare!
N˜ao precisamos de
vari´avel auxiliar para
guardar o resultado de
um m´etodo
O computador ir´a buscar
o atributo r, de n
Ent˜ao olhar´a o atributo
casa, de r
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr,null);
Residencia r2 = new Residencia(cq,null);
Residencia r3 = new Residencia(cq2,null);
ListaSimples l = new ListaSimples();
l.insere(r1);
l.insere(r2);
l.insere(r3);
No n = l.cabeca;
while (n != null) {
System.out.println(n.r.casa.area());
n = n.prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 10 / 33
46. Listas Ligadas
Repare!
Finalmente, chamar´a o
m´etodo area() desse
atributo.
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr,null);
Residencia r2 = new Residencia(cq,null);
Residencia r3 = new Residencia(cq2,null);
ListaSimples l = new ListaSimples();
l.insere(r1);
l.insere(r2);
l.insere(r3);
No n = l.cabeca;
while (n != null) {
System.out.println(n.r.casa.area());
n = n.prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 11 / 33
47. Listas Ligadas
Repare!
Finalmente, chamar´a o
m´etodo area() desse
atributo.
Sa´ıda
$ java Projeto
64.0
100.0
150.0
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr,null);
Residencia r2 = new Residencia(cq,null);
Residencia r3 = new Residencia(cq2,null);
ListaSimples l = new ListaSimples();
l.insere(r1);
l.insere(r2);
l.insere(r3);
No n = l.cabeca;
while (n != null) {
System.out.println(n.r.casa.area());
n = n.prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 11 / 33
48. Listas Ligadas
Repare!
Finalmente, chamar´a o
m´etodo area() desse
atributo.
Sa´ıda
$ java Projeto
64.0
100.0
150.0
(Note que a ordem est´a
inversa `a de inser¸c˜ao)
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr,null);
Residencia r2 = new Residencia(cq,null);
Residencia r3 = new Residencia(cq2,null);
ListaSimples l = new ListaSimples();
l.insere(r1);
l.insere(r2);
l.insere(r3);
No n = l.cabeca;
while (n != null) {
System.out.println(n.r.casa.area());
n = n.prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 11 / 33
49. Listas Ligadas – Mudando Projeto
class Projeto {
Residencia[] condominio;
int ultimo = -1;
boolean adicionaRes(Residencia r) {
if (this.ultimo < this.condominio.length-1) {
ultimo++;
this.condominio[ultimo] = r;
return(true);
}
return(false);
}
Projeto(int tam) {
this.condominio = new Residencia[tam];
}
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Residencia r3 = new Residencia(cq2, null);
Projeto p = new Projeto(3);
p.adicionaRes(r1);
p.adicionaRes(r2);
p.adicionaRes(r3);
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 12 / 33
50. Listas Ligadas – Mudando Projeto
class Projeto {
Residencia[] condominio;
int ultimo = -1;
boolean adicionaRes(Residencia r) {
if (this.ultimo < this.condominio.length-1) {
ultimo++;
this.condominio[ultimo] = r;
return(true);
}
return(false);
}
Projeto(int tam) {
this.condominio = new Residencia[tam];
}
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Residencia r3 = new Residencia(cq2, null);
Projeto p = new Projeto(3);
p.adicionaRes(r1);
p.adicionaRes(r2);
p.adicionaRes(r3);
}
}
class Projeto {
ListaSimples condominio;
void adicionaRes(Residencia r) {
this.condominio.insere(r);
}
Projeto() {
this.condominio = new ListaSimples();
}
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
CasaQuad cq2 = new CasaQuad(8,1523);
Residencia r1 = new Residencia(cr, null);
Residencia r2 = new Residencia(cq, null);
Residencia r3 = new Residencia(cq2, null);
Projeto p = new Projeto();
p.adicionaRes(r1);
p.adicionaRes(r2);
p.adicionaRes(r3);
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 12 / 33
51. Listas Ligadas
Incluindo Elemento em uma Posi¸c˜ao (4a
)
el1 el2 el3 el4cabe¸ca
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 13 / 33
52. Listas Ligadas
Incluindo Elemento em uma Posi¸c˜ao (4a
)
Alocamos espa¸co para o novo elemento
el1 el2 el3 el4cabe¸ca
el5
q
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 13 / 33
53. Listas Ligadas
Incluindo Elemento em uma Posi¸c˜ao (4a
)
Alocamos espa¸co para o novo elemento
Marcamos o in´ıcio da lista
el1 el2 el3 el4cabe¸ca
el5
q
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 13 / 33
54. Listas Ligadas
Incluindo Elemento em uma Posi¸c˜ao (4a
)
Alocamos espa¸co para o novo elemento
Marcamos o in´ıcio da lista
Andamos at´e a (n-1)a
posi¸c˜ao:
el1 el2 el3 el4cabe¸ca
el5
q
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 13 / 33
55. Listas Ligadas
Incluindo Elemento em uma Posi¸c˜ao (4a
)
Fazemos o campo prox do novo elemento apontar
para o no
elemento da lista
el1 el2 el3 el4cabe¸ca
el5
q
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 14 / 33
56. Listas Ligadas
Incluindo Elemento em uma Posi¸c˜ao (4a
)
Fazemos o campo prox do novo elemento apontar
para o no
elemento da lista
Fazemos o elemento seguinte ao (n-1)o
ser o novo
elemento
el1 el2 el3 el4cabe¸ca
el5
q
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 14 / 33
58. Listas Ligadas
Isso contudo
funciona para
posi¸c˜oes > 0
E se for na posi¸c˜ao
0?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 15 / 33
59. Listas Ligadas
Isso contudo
funciona para
posi¸c˜oes > 0
E se for na posi¸c˜ao
0?
J´a vimos inser¸c˜ao na
primeira posi¸c˜ao
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 15 / 33
60. Listas Ligadas
Isso contudo
funciona para
posi¸c˜oes > 0
E se for na posi¸c˜ao
0?
J´a vimos inser¸c˜ao na
primeira posi¸c˜ao
Ent˜ao...
public void insere(Residencia el, int pos) {
No q = new No(el);
if (pos == 0) {
q.prox = this.cabeca;
this.cabeca = q;
}
else {
No p = this.cabeca;
for (int i=0; i<pos-1; i++) p = p.prox;
q.prox = p.prox;
p.prox = q;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 15 / 33
61. Listas Ligadas
Naturalmente, falta
ainda verificar se n˜ao
tentamos colocar um
elemento ap´os o
´ultimo.
public void insere(Residencia el, int pos) {
No q = new No(el);
if (pos == 0) {
q.prox = this.cabeca;
this.cabeca = q;
}
else {
No p = this.cabeca;
for (int i=0; i<pos-1; i++) p = p.prox;
q.prox = p.prox;
p.prox = q;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 16 / 33
62. Listas Ligadas
Naturalmente, falta
ainda verificar se n˜ao
tentamos colocar um
elemento ap´os o
´ultimo.
Para isso, podemos
criar um m´etodo que
retorne o n´umero de
elementos da lista:
public void insere(Residencia el, int pos) {
No q = new No(el);
if (pos == 0) {
q.prox = this.cabeca;
this.cabeca = q;
}
else {
No p = this.cabeca;
for (int i=0; i<pos-1; i++) p = p.prox;
q.prox = p.prox;
p.prox = q;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 16 / 33
63. Listas Ligadas
Naturalmente, falta
ainda verificar se n˜ao
tentamos colocar um
elemento ap´os o
´ultimo.
Para isso, podemos
criar um m´etodo que
retorne o n´umero de
elementos da lista:
public void insere(Residencia el, int pos) {
No q = new No(el);
if (pos == 0) {
q.prox = this.cabeca;
this.cabeca = q;
}
else {
No p = this.cabeca;
for (int i=0; i<pos-1; i++) p = p.prox;
q.prox = p.prox;
p.prox = q;
}
}
public int elementos() {
int cont = 0;
No p = this.cabeca;
while (p != null) {
p = p.prox;
cont++;
}
return(cont);
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 16 / 33
64. Listas Ligadas
Excluindo Elemento em uma Posi¸c˜ao (3a
)
el1 el2 el3 el4cabe¸ca
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 17 / 33
65. Listas Ligadas
Excluindo Elemento em uma Posi¸c˜ao (3a
)
Marcamos o in´ıcio da lista
el1 el2 el3 el4cabe¸ca
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 17 / 33
66. Listas Ligadas
Excluindo Elemento em uma Posi¸c˜ao (3a
)
Marcamos o in´ıcio da lista
Movemos at´e o elemento anterior ao no
el1 el2 el3 el4cabe¸ca
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 17 / 33
67. Listas Ligadas
Excluindo Elemento em uma Posi¸c˜ao (3a
)
Marcamos o in´ıcio da lista
Movemos at´e o elemento anterior ao no
Fazemos o pr´oximo elemento de p ser o elemento
que est´a ap´os seu pr´oximo
el1 el2 el3 el4cabe¸ca
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 17 / 33
68. Listas Ligadas
Excluindo Elemento em uma Posi¸c˜ao (3a
)
E se a posi¸c˜ao pretendida for a primeira (0)?
el1 el2 el3 el4cabe¸ca
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 18 / 33
69. Listas Ligadas
Excluindo Elemento em uma Posi¸c˜ao (3a
)
E se a posi¸c˜ao pretendida for a primeira (0)?
Movemos a cabe¸ca
el1 el2 el3 el4
cabe¸ca
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 18 / 33
70. Listas Ligadas
Excluindo Elemento em uma Posi¸c˜ao (3a
)
E se a posi¸c˜ao pretendida for a primeira (0)?
Movemos a cabe¸ca
A lista fica
el1 el2 el3 el4
cabe¸ca
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 18 / 33
71. Listas Ligadas
Ent˜ao...
public boolean exclui(int i) {
if (i < 0 || i >= this.elementos() ||
this.cabeca == null) return(false);
if (i == 0) this.cabeca = this.cabeca.prox;
else {
No p = this.cabeca;
for (int j=0; j<(i-1); j++) {
p = p.prox;
}
p.prox = p.prox.prox;
}
return(true);
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 19 / 33
72. Listas Ligadas
Ent˜ao...
Inclu´ımos testes dos
parˆametros
public boolean exclui(int i) {
if (i < 0 || i >= this.elementos() ||
this.cabeca == null) return(false);
if (i == 0) this.cabeca = this.cabeca.prox;
else {
No p = this.cabeca;
for (int j=0; j<(i-1); j++) {
p = p.prox;
}
p.prox = p.prox.prox;
}
return(true);
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 19 / 33
73. Listas Ligadas
Modificamos
insere tamb´em,
incluindo os testes
dos parˆametros
public boolean insere(Residencia el, int pos)
{
if (pos < 0 || pos > this.elementos())
return(false);
No q = new No(el);
if (pos == 0) {
q.prox = this.cabeca;
this.cabeca = q;
}
else {
No p = this.cabeca;
for (int i=0; i<pos-1; i++) p = p.prox;
q.prox = p.prox;
p.prox = q;
}
return(true);
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 20 / 33
74. Listas Ligadas
Alternativamente `a
chamada constante
de elementos(),
poder´ıamos ter um
atributo elementos
na classe
ListaSimples, que
guardasse o n´umero
de elementos da lista
public boolean insere(Residencia el, int pos)
{
if (pos < 0 || pos > this.elementos())
return(false);
No q = new No(el);
if (pos == 0) {
q.prox = this.cabeca;
this.cabeca = q;
}
else {
No p = this.cabeca;
for (int i=0; i<pos-1; i++) p = p.prox;
q.prox = p.prox;
p.prox = q;
}
return(true);
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 21 / 33
76. Pilhas
Estruturas muito
usadas em computa¸c˜ao
Pense numa pilha de
livros
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 22 / 33
77. Pilhas
Estruturas muito
usadas em computa¸c˜ao
Pense numa pilha de
livros
Se queremos por mais um
livro na pilha, onde
colocamos?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 22 / 33
78. Pilhas
Estruturas muito
usadas em computa¸c˜ao
Pense numa pilha de
livros
Se queremos por mais um
livro na pilha, onde
colocamos?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 22 / 33
79. Pilhas
Estruturas muito
usadas em computa¸c˜ao
Pense numa pilha de
livros
Se queremos por mais um
livro na pilha, onde
colocamos?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 22 / 33
80. Pilhas
Estruturas muito
usadas em computa¸c˜ao
Pense numa pilha de
livros
Se queremos por mais um
livro na pilha, onde
colocamos?
Se queremos tirar um
livro, de onde tiramos?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 22 / 33
81. Pilhas
Estruturas muito
usadas em computa¸c˜ao
Pense numa pilha de
livros
Se queremos por mais um
livro na pilha, onde
colocamos?
Se queremos tirar um
livro, de onde tiramos?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 22 / 33
82. Pilhas
Estruturas muito
usadas em computa¸c˜ao
Pense numa pilha de
livros
Se queremos por mais um
livro na pilha, onde
colocamos?
Se queremos tirar um
livro, de onde tiramos?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 22 / 33
85. Pilhas
E como representamos
isso?
Dentre outras coisas, com
uma lista ligada:
el3
el2
el1
topo
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 23 / 33
86. Pilhas
E como representamos
isso?
Dentre outras coisas, com
uma lista ligada:
el3
el2
el1
topo
el3 el2 el1
topo
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 23 / 33
87. Pilhas
E como representamos
isso?
Dentre outras coisas, com
uma lista ligada:
Empilhamentos e
Desempilhamentos s˜ao
feitos sempre na
posi¸c˜ao 0
el3
el2
el1
topo
el3 el2 el1
topo
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 23 / 33
88. Pilhas
E como representamos
isso?
Dentre outras coisas, com
uma lista ligada:
Empilhamentos e
Desempilhamentos s˜ao
feitos sempre na
posi¸c˜ao 0
O topo da pilha
el3
el2
el1
topo
el3 el2 el1
topo
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 23 / 33
89. Filas
Pilhas s˜ao do tipo LIFO (Last In First Out)
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 24 / 33
90. Filas
Pilhas s˜ao do tipo LIFO (Last In First Out)
O ´ultimo a entrar ´e o primeiro a sair
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 24 / 33
91. Filas
Pilhas s˜ao do tipo LIFO (Last In First Out)
O ´ultimo a entrar ´e o primeiro a sair
Uma estrutura alternativa `a pilha ´e a Fila
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 24 / 33
92. Filas
Pilhas s˜ao do tipo LIFO (Last In First Out)
O ´ultimo a entrar ´e o primeiro a sair
Uma estrutura alternativa `a pilha ´e a Fila
FIFO (First In First Out)
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 24 / 33
93. Filas
Pilhas s˜ao do tipo LIFO (Last In First Out)
O ´ultimo a entrar ´e o primeiro a sair
Uma estrutura alternativa `a pilha ´e a Fila
FIFO (First In First Out)
O primeiro item a entrar ´e o primeiro a sair
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 24 / 33
94. Filas
Pense numa fila de banco
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 25 / 33
95. Filas
Pense numa fila de banco
Se uma nova pessoa aparece, onde entra?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 25 / 33
96. Filas
Pense numa fila de banco
Se uma nova pessoa aparece, onde entra?
Quem ser´a o primeiro a ser atendido?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 25 / 33
97. Filas
Pense numa fila de banco
Se uma nova pessoa aparece, onde entra?
Quem ser´a o primeiro a ser atendido?
Se queremos retirar um elemento, retiramos da
frente; se queremos incluir, incluimos no final da fila
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 25 / 33
98. Filas
Pense numa fila de banco
Se uma nova pessoa aparece, onde entra?
Quem ser´a o primeiro a ser atendido?
Se queremos retirar um elemento, retiramos da
frente; se queremos incluir, incluimos no final da fila
Da mesma forma que em uma pilha, em uma fila
n˜ao podemos retirar um elemento do meio da fila,
ou l´a colocar um
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 25 / 33
100. Filas
Incluindo um Elemento
Criamos o elemento novo
el1 el2 el3in´ıcio
el4
q
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 26 / 33
101. Filas
Incluindo um Elemento
Criamos o elemento novo
Marcamos o in´ıcio da fila
el1 el2 el3in´ıcio
el4
q
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 26 / 33
102. Filas
Incluindo um Elemento
Corremos o ponteiro at´e o final da fila
el1 el2 el3in´ıcio
el4
q
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 27 / 33
103. Filas
Incluindo um Elemento
Corremos o ponteiro at´e o final da fila
Fazemos o elemento seguinte ao final da fila ser o
novo elemento
el1 el2 el3in´ıcio
el4
q
p
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 27 / 33
104. Filas
Incluindo um Elemento
E se a fila estiver inicialmente vazia?
in´ıcio
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 28 / 33
105. Filas
Incluindo um Elemento
E se a fila estiver inicialmente vazia?
Criamos o novo elemento
in´ıcio el1
q
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 28 / 33
106. Filas
Incluindo um Elemento
E se a fila estiver inicialmente vazia?
Criamos o novo elemento
E fazemos ele ser o in´ıcio da fila
in´ıcio el1
q
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 28 / 33
107. Filas
Excluindo um Elemento
E como exclu´ımos de uma fila?
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 29 / 33
108. Filas
Excluindo um Elemento
E como exclu´ımos de uma fila?
Do mesmo modo que em uma pilha
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 29 / 33
109. Listas Ligadas – Considera¸c˜oes Finais
Trabalhamos at´e agora
com acesso direto aos
atributos
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 30 / 33
110. Listas Ligadas – Considera¸c˜oes Finais
Trabalhamos at´e agora
com acesso direto aos
atributos
Podemos restringir esse
acesso, via getters e
setters
public class No {
Residencia r;
No prox = null;
public No(Residencia r) {
this.r = r;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 30 / 33
111. Listas Ligadas – Considera¸c˜oes Finais
Trabalhamos at´e agora
com acesso direto aos
atributos
Podemos restringir esse
acesso, via getters e
setters
Tornamos os atributos
private, com m´etodos
de acesso public
public class No {
private Residencia r;
private No prox = null;
public No(Residencia r) {
this.r = r;
}
public Residencia getRes() {
return(this.r);
}
public No getProx() {
return(this.prox);
}
public void setRes(Residencia r) {
this.r = r;
}
public void setProx(No prox) {
this.prox = prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 30 / 33
112. Listas Ligadas – Considera¸c˜oes Finais
Boa pr´atica de
programa¸c˜ao
public class No {
private Residencia r;
private No prox = null;
public No(Residencia r) {
this.r = r;
}
public Residencia getRes() {
return(this.r);
}
public No getProx() {
return(this.prox);
}
public void setRes(Residencia r) {
this.r = r;
}
public void setProx(No prox) {
this.prox = prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 31 / 33
113. Listas Ligadas – Considera¸c˜oes Finais
Boa pr´atica de
programa¸c˜ao
Nos permite dar acesso
apenas para leitura, por
exemplo
public class No {
private Residencia r;
private No prox = null;
public No(Residencia r) {
this.r = r;
}
public Residencia getRes() {
return(this.r);
}
public No getProx() {
return(this.prox);
}
public void setRes(Residencia r) {
this.r = r;
}
public void setProx(No prox) {
this.prox = prox;
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 31 / 33
114. Listas Ligadas – Considera¸c˜oes Finais
Boa pr´atica de
programa¸c˜ao
Nos permite dar acesso
apenas para leitura, por
exemplo
Removendo setRes e
setProx
public class No {
private Residencia r;
private No prox = null;
public No(Residencia r) {
this.r = r;
}
public Residencia getRes() {
return(this.r);
}
public No getProx() {
return(this.prox);
}
}
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 31 / 33
115. QUE SACANAGEM!!!
Java j´a faz tudo pra vocˆe!
LinkedList (duplamente ligada): https://docs.oracle.
com/javase/9/docs/api/java/util/LinkedList.html
Vector (arranjo de tamanho vari´avel):
https://docs.oracle.com/javase/9/docs/api/java/
util/Vector.html
Stack (de Vector): https://docs.oracle.com/javase/9/
docs/api/java/util/Stack.html
Queue (interface – mais adiante veremos): https://docs.
oracle.com/javase/9/docs/api/java/util/Queue.html
Norton Trevisan Roman Aula 21 – Listas Ligadas 12 de maio de 2020 32 / 33