Lista Circular(Vantagem)
Avantagemdestalistaé,estandonofinal
dalista,podemosretornaraoiníciodela,
comapenas1operação.Aocontrárioda
Simplesmente eDuplamente encadeada, em
queeranecessárion-1operações.
“
Lista Circular(Vantagem)
Início
ListaSimples
Atual
:getAnterior()
Lista Circular(Vantagem)
Início
ListaSimples
Atual
:getAnterior()
Lista Circular(Vantagem)
Início
ListaSimples
Atual
:getAnterior()
Lista Circular(Vantagem)
Início
ListaSimples
Atual
:getAnterior()
Lista Circular(Vantagem)
Início
ListaSimples
Atual
N–1operações!
Lista Circular(Vantagem)
Início
ListaDuplamenteEncadeada
Atual
N–1operações!
Lista Circular(Vantagem)
Início
ListaCircular
Atual
Lista Circular(Vantagem)
Início
ListaCircular
Atual
getProximo()
Lista Circular(Vantagem)
Início
ListaCircular
Atual
Lista Circular(Vantagem)
Início
ListaCircular
Atual
1operação!
Lista Circular(Aplicação)
ExistemváriasaplicaçõesdeListaCircular.
OmaiscomuméCarrossel deImagens.
Lista Circular(Aplicação)
EstaListapodeserutilizaemPlayersou
outrotipodebuscaquedeseje-seotimizar.
Lista Circular(Estrutura)
Aestrutura doNoésimilaràsListas
anteriores.
Próx.
Valor
Nó
Lista Circular(Estrutura)
Próx.
Valor
Nó
classNo<T>{
T valor;
Noproximo;
/* construtor e métodos */
}
Código
Lista Circular(Estrutura)
Próx.
Valor
Nó
classNo<T>{
T valor;
Noproximo;
/* construtor e métodos */
}
Código
Lista Circular(Estrutura)
Próx.
Valor
Nó
classNo<T>{
T valor;
Noproximo;
/* construtor e métodos */
}
Código
Lista Circular(Estrutura)
Aestrutura daListatambémsimilaràs
Listasanteriores.
ListaCircular
primeiro
Lista Circular(Estrutura)
Primeiro
classListaCircular<T>{
No<T> primeiro;
/* construtor e métodos */
}
Código
ListaCircular
Lista Circular(Estrutura)
Primeiro
classListaCircular<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)
returntrue;
publicbooleanestaVazia(){
Método: EstaVazia()
nome valor
iprimeiro null
Código Java Objetos e Sentenças
4returnfalse;
1
2
3
if(primeiro == null)
returntrue;
publicbooleanestaVazia(){
Método: EstaVazia()
nome valor
i
primeiro == null
primeiro
true
null
Código Java Objetos e Sentenças
4returnfalse;
b
1
2
3
if(primeiro == null)
returntrue;
publicbooleanestaVazia(){
Método: EstaVazia()
nome valor
i
b
primeiro == null
estaVazia() true
primeiro
true
null
Código Java Objetos e Sentenças
4returnfalse;
b
1
2
3
if(primeiro == null)
returntrue;
publicbooleanestaVazia(){
Método: EstaVazia()
nome valor
iprimeiro No@00001
Código Java Objetos e Sentenças
4returnfalse;
1
2
3
if(primeiro == null)
returntrue;
publicbooleanestaVazia(){
Método: EstaVazia()
nome valor
i
primeiro == null
primeiro
false
No@00001
Código Java Objetos e Sentenças
4returnfalse;
b
1
2
3
if(primeiro == null)
returntrue;
publicbooleanestaVazia(){
Método: EstaVazia()
nome valor
i
b
primeiro == null
estaVazia() false
primeiro
false
No@00001
Código Java Objetos e Sentenças
4returnfalse;
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
ParaInserirnoFundo,Bastanãomodificaro
ValordeInicio.
Lista Circular(InserirFundo)
Início
Novo
Lista Circular(Inserir)
Início
Emborapareçaestranho,masaoinseriro
primeiro nó,eledeveapontarparaele
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ícioremovido
Lista Circular(removerFrente)
Início
Lista Circular
Estrutura de Dados
Operações
•EstaVazia;
•InserirFrente/InserirFundo;
•RemoverFrente/RemoverFundo;
•RemoverPorValor.