SlideShare uma empresa Scribd logo
Lista Circular
Estrutura de Dados
CURSO ESTRUTURA DE DADOS EM JAVA
LUIS GUSTAVO ARAUJO
Lista Circular(Definição).
Uma Lista Circular, nada mais é do que é
uma Lista Simplesmente ou Duplamente
encadeada , no qual o último Nó aponta
para o Primeiro. No caso da duplamente
encadeada, o primeiro também aponta para o
último nó!
“
Lista Circular(Vantagem)
A vantagem desta lista é, estando no final
da lista, podemos retornar ao início dela,
com apenas 1 operação. Ao contrário da
Simplesmente e Duplamente encadeada, em
que era necessário n-1 operações.
“
Lista Circular(Vantagem)
Início
Lista Simples
Atual
: getAnterior()
Lista Circular(Vantagem)
Início
Lista Simples
Atual
: getAnterior()
Lista Circular(Vantagem)
Início
Lista Simples
Atual
: getAnterior()
Lista Circular(Vantagem)
Início
Lista Simples
Atual
: getAnterior()
Lista Circular(Vantagem)
Início
Lista Simples
Atual
N – 1 operações!
Lista Circular(Vantagem)
Início
Lista Duplamente Encadeada
Atual
N – 1 operações!
Lista Circular(Vantagem)
Início
Lista Circular
Atual
Lista Circular(Vantagem)
Início
Lista Circular
Atual
getProximo()
Lista Circular(Vantagem)
Início
Lista Circular
Atual
Lista Circular(Vantagem)
Início
Lista Circular
Atual
1 operação!
Lista Circular(Aplicação)
Existem várias aplicações de Lista Circular.
O mais comum é Carrossel de Imagens.
Lista Circular(Aplicação)
Esta Lista pode ser utiliza em Players ou
outro tipo de busca que deseje-se otimizar.
Lista Circular(Estrutura)
A estrutura do No é similar às Listas
anteriores.
Próx.
Valor
Nó
Lista Circular(Estrutura)
Próx.
Valor
Nó
class No<T>{
T valor;
No proximo;
/* construtor e métodos */
}
Código
Lista Circular(Estrutura)
Próx.
Valor
Nó
class No<T>{
T valor;
No proximo;
/* construtor e métodos */
}
Código
Lista Circular(Estrutura)
Próx.
Valor
Nó
class No<T>{
T valor;
No proximo;
/* construtor e métodos */
}
Código
Lista Circular(Estrutura)
A estrutura da Lista também similar às
Listas anteriores.
ListaCircular
primeiro
Lista Circular(Estrutura)
Primeiro
class ListaCircular<T>{
No<T> primeiro;
/* construtor e métodos */
}
Código
ListaCircular
Lista Circular(Estrutura)
Primeiro
class ListaCircular<T>{
No<T> primeiro;
/* construtor e métodos */
}
Código
ListaCircular
Lista Circular
Estrutura de Dados
Operações
• EstaVazia;
• InserirFrente/InserirFundo;
• RemoverFrente/RemoverFundo;
• RemoverPorValor.
Lista Circular(EstaVazia)
Primeiro =
1
2
3
if(primeiro == null)
return true;
public boolean estaVazia(){
Método: EstaVazia()
nome valor
i primeiro null
Código Java Objetos e Sentenças
4 return false;
1
2
3
if(primeiro == null)
return true;
public boolean estaVazia(){
Método: EstaVazia()
nome valor
i
primeiro == null
primeiro
true
null
Código Java Objetos e Sentenças
4 return false;
b
1
2
3
if(primeiro == null)
return true;
public boolean estaVazia(){
Método: EstaVazia()
nome valor
i
b
primeiro == null
estaVazia() true
primeiro
true
null
Código Java Objetos e Sentenças
4 return false;
b
1
2
3
if(primeiro == null)
return true;
public boolean estaVazia(){
Método: EstaVazia()
nome valor
i primeiro No@00001
Código Java Objetos e Sentenças
4 return false;
1
2
3
if(primeiro == null)
return true;
public boolean estaVazia(){
Método: EstaVazia()
nome valor
i
primeiro == null
primeiro
false
No@00001
Código Java Objetos e Sentenças
4 return false;
b
1
2
3
if(primeiro == null)
return true;
public boolean estaVazia(){
Método: EstaVazia()
nome valor
i
b
primeiro == null
estaVazia() false
primeiro
false
No@00001
Código Java Objetos e Sentenças
4 return false;
b
Lista Circular
Estrutura de Dados
Operações
• EstaVazia;
• InserirFrente/InserirFundo;
• RemoverFrente/RemoverFundo;
• RemoverPorValor.
Lista Circular(InserirFrente)
Início
Lista Circular(InserirFrente)
Início
Novo
Lista Circular(InserirFrente)
Início
Novo
Lista Circular(InserirFrente)
Início
Novo
Lista Circular(InserirFrente)
Início
Novo
Lista Circular(InserirFrente)
Início
Novo
Lista Circular(InserirFrente)
Início
Lista Circular
Estrutura de Dados
Operações
• EstaVazia;
• InserirFrente/InserirFundo;
• RemoverFrente/RemoverFundo;
• RemoverPorValor.
Lista Circular(InserirFundo)
Início
Para Inserir no Fundo, Basta não modificar o
Valor de Inicio.
Lista Circular(InserirFundo)
Início
Novo
Lista Circular(Inserir)
Início
Embora pareça estranho, mas ao inserir o
primeiro nó, ele deve apontar para ele
mesmo!
Lista Circular
Estrutura de Dados
Operações
• EstaVazia;
• InserirFrente/InserirFundo;
• RemoverFrente/RemoverFundo;
• RemoverPorValor.
Lista Circular(removerFrente)
Início
Lista Circular(removerFrente)
Início
Lista Circular(removerFrente)
Início
Lista Circular(removerFrente)
Início
Lista Circular(removerFrente)
Início
removido
Lista Circular(removerFrente)
Início
Lista Circular
Estrutura de Dados
Operações
• EstaVazia;
• InserirFrente/InserirFundo;
• RemoverFrente/RemoverFundo;
• RemoverPorValor.
Lista Circular(removerFundo)
Início
Lista Circular(removerFundo)
Início
Lista Circular(removerFundo)
Início
Lista Circular(removerFundo)
Início
Lista Circular(removerFundo)
Início
removido
Lista Circular(removerFundo)
Início

Mais conteúdo relacionado

Semelhante a Lista Circular em Java

Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
Sérgio Souza Costa
 
Pged 04
Pged 04Pged 04
Pged 04
samuelthiago
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
Guilherme André Turci
 
Listas Encadeadas
Listas EncadeadasListas Encadeadas
Listas Encadeadas
Sérgio Souza Costa
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
Marco Mendes
 
Aquece Para a prova de EDA3
Aquece Para a prova de EDA3Aquece Para a prova de EDA3
Aquece Para a prova de EDA3
CriatividadeZeroDocs
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
Adriano Teixeira de Souza
 
Heap
HeapHeap
Android - Dicas de Performance
Android - Dicas de PerformanceAndroid - Dicas de Performance
Android - Dicas de Performance
Amélia Pessoa
 
Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptx
ishtar14
 
Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptx
suellencarolinerosa
 
Doctrine ORM
Doctrine ORMDoctrine ORM
Doctrine ORM
Rafael Mello
 
SPL Datastructures
SPL DatastructuresSPL Datastructures
SPL Datastructures
Felipe Ribeiro
 
Pged 06
Pged 06Pged 06
Pged 06
samuelthiago
 

Semelhante a Lista Circular em Java (14)

Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Pged 04
Pged 04Pged 04
Pged 04
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
 
Listas Encadeadas
Listas EncadeadasListas Encadeadas
Listas Encadeadas
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
Aquece Para a prova de EDA3
Aquece Para a prova de EDA3Aquece Para a prova de EDA3
Aquece Para a prova de EDA3
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Heap
HeapHeap
Heap
 
Android - Dicas de Performance
Android - Dicas de PerformanceAndroid - Dicas de Performance
Android - Dicas de Performance
 
Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptx
 
Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptx
 
Doctrine ORM
Doctrine ORMDoctrine ORM
Doctrine ORM
 
SPL Datastructures
SPL DatastructuresSPL Datastructures
SPL Datastructures
 
Pged 06
Pged 06Pged 06
Pged 06
 

Lista Circular em Java