Escolar Documentos
Profissional Documentos
Cultura Documentos
Fabrcio J. Barth
BandTec - Faculdade de Tecnologia Bandeirantes
Fevereiro de 2011
Topicos Principais
Motivacao
Listas encadeadas
Implementacoes recursivas
Listas de tipos estruturados
Listas Encadeadas
T
opicos Principais
Topicos complementares
Listas circulares
Listas duplamente encadeadas
Listas Encadeadas
T
opicos complementares
Topicos Principais
Motivacao
Vetor:
? ocupa um espaco contguo de memoria
? permite acesso randomico aos elementos
? deve ser dimensionado com um n
umero maximo de
elementos
T
opicos Principais
Motivac
ao
Motivacao
Estruturas de dados dinamicas: crescem ou decrescem
`a medida que elementos sao inseridos ou removidos.
Exemplo: listas encadeadas.
Listas encadeadas sao amplamentes utilizadas para
implementar outras estruturas de dados.
T
opicos Principais
Motivac
ao
Listas Encadeadas
T
opicos Principais
Listas Encadeadas
T
opicos Principais
Listas Encadeadas
class Nodo {
private int info;
private Nodo prox;
public int getInfo() {
return info;
}
public void setInfo(int info) {
this.info = info;
}
public Nodo getProx() {
return prox;
}
public void setProx(Nodo prox) {
this.prox = prox;
}
}
T
opicos Principais
T
opicos Principais
Criac
ao da lista vazia
Aloca mem
oria para armazenar o elemento
Encadeia o elemento na lista existente
T
opicos Principais
/*
* insercao no inicio
*/
public void add(int i){
Nodo novo = new Nodo();
novo.setInfo(i);
novo.setProx(prim);
prim = novo;
}
T
opicos Principais
Exemplo de utilizacao
1
2
3
4
5
6
7
public Main(){
Lista lista = new Lista();
lista.criaLista();
lista.add(45);
lista.add(60);
lista.add(1);
}
T
opicos Principais
Exemplo de utilizac
ao
T
opicos Principais
Func
ao que percorre os elementos da lista
Exemplo de utilizacao
1
2
3
4
5
6
7
8
9
10
11
public Main(){
Lista lista = new Lista();
lista.criaLista();
System.out.println("Imprimindo valores");
lista.print();
lista.add(45);
lista.add(60);
lista.add(1);
System.out.println("Imprimindo valores");
lista.print();
}
T
opicos Principais
Exemplo de utilizac
ao
public boolean
if(prim ==
return
else
return
}
T
opicos Principais
isEmpty(){
null)
true;
false;
Func
ao que verifica se a lista est
a vazia
Funcao de busca
Recebe a informacao referente ao elemento a pesquisar
Retornar o objeto da lista que representa o elemento
ou null, caso o elemento nao seja encontrado na lista.
T
opicos Principais
Func
ao de busca
1
2
3
4
5
6
7
8
9
10
11
/*
* busca por um elemento na lista
*/
public Nodo search(int i){
for(Nodo n = prim; n != null; n = n.getProx()){
if(n.getInfo()==i){
return n;
}
}
return null; /* nao achou o elemento*/
}
T
opicos Principais
Func
ao de busca
Nodo temp;
if((temp = lista.search(60)) != null)
System.out.println("Achou "+temp.getInfo());
else
System.out.println("Nao achou o elemento");
T
opicos Principais
Exemplo de utilizac
ao da func
ao de busca
T
opicos Principais
Func
ao que retira um elemento da lista
T
opicos Principais
Func
ao que retira um elemento da lista
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
T
opicos Principais
Func
ao que retira um elemento da lista
Func
ao para liberar a lista
T
opicos Principais
Manutenc
ao da lista ordenada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
T
opicos Principais
Manutenc
ao da lista ordenada
T
opicos Principais
Definic
ao recursiva de lista
T
opicos Principais
Exemplo: func
ao recursiva para imprimir uma lista
T
opicos Principais
Func
ao imprime recursiva
T
opicos Principais
Func
ao imprime recursiva invertida
T
opicos Principais
Exemplo: func
ao para retirar um elemento da lista
T
opicos Principais
Func
ao retira elemento recursiva
Igualdade de listas
boolean listasIguais(Nodo l1, Nodo l2)
Implementacao nao recursiva:
percorre as duas listas usando dois ponteiros auxiliares:
? se duas informacoes forem diferentes entao as listas
sao diferentes.
ao terminar uma das listas ou as duas:
? se os dois ponteiros auxiliares sao NULL entao as
duas listas tem o mesmo n
umero de elementos e
sao iguais.
T
opicos Principais
Igualdade de listas
if(t1.getInfo() != t2.getInfo())
return false;
8
9
}
return true;
10
11
12
T
opicos Principais
Listas iguais: n
ao recursiva
Igualdade de listas
boolean listasIguais(Nodo l1, Nodo l2)
Implementacao recursiva:
se as duas listas dadas sao vazias entao sao iguais
se nao forem ambas vazias, mas uma delas e vazia,
entao sao diferentes
se ambas nao forem vazias, teste:
? se informacoes associadas aos primeiros nos sao
iguais e
? se as sub-listas sao iguais.
T
opicos Principais
Igualdade de listas
T
opicos Principais
T
opicos Principais
T
opicos Principais
5
6
7
8
9
10
11
12
class Aluno{
private String nome;
private String matricula;
private float n1;
private float n2;
private float n3;
}
T
opicos Principais
Listas heterogeneas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
T
opicos Principais
Listas heterog
eneas
Topicos Complementares
40
Topicos Complementares
Listas Circulares
Listas Duplamente Encadeadas
T
opicos Complementares
T
opicos Complementares
Material de consulta
Captulo 10 do livro: Introducao a Estruturas de
Dados do Waldemar Celes, Renato Cerqueira e Jose
Lucas Rangel.
T
opicos Complementares
Material de consulta
Material de refer
encia
Captulo 10 do livro: Introducao a Estruturas de
Dados do Waldemar Celes, Renato Cerqueira e Jose
Lucas Rangel.
Imagens retiradas do site da disciplina de
Programacao II da PUC do Rio de Janeiro.
http://www.inf.puc-rio.br/ inf1007/.
T
opicos Complementares
Material de refer
encia