Anda di halaman 1dari 11

Lista Linear Simplesmente Encadeada - LLSE

ALGORITMOS
SOBRE A
TAD - LLSE
Lista Linear Simplesmente Encadeada - LLSE
PREFÁCIO:

Esta apresentação foi elaborada para os alunos que


utilizam algoritmos para descrever a lógica de
programação dos métodos de uma LLSE.

A próxima Notas de Aula, contém um programa


desenvolvido em JAVA, juntamente com o código.

Interessante observar, que o desenvolvimento do


programa teve como base a lógica do algoritmo.

Porém, como a linguagem Java possibilita diversos


recursos, como qualquer outra linguagem de
programação, a construção aparentemente não
possui relação com os algoritmos, mas seguiu,
inicialmente, a mesma lógica.
Lista Linear Simplesmente Encadeada - LLSE

TAD-LLSE
Célula
Célula= { INFO, PRX}
LST, NOVA, ANT, ATUAL, Info PRX
TAM
+ boolean Inicializar()
- boolean CriarCelula()
+ boolean Inserir(Objeto)
+ void Pesquisa(Objeto)
+ Object Acessar()
+ vazio Eliminar()
+ vazio Tamanho()
+ vazio Destruir(LST)
- boolean Vazia(Célula)
- vazio BuscaAnt()
Lista Linear Simplesmente Encadeada - LLSE
Algoritmo Inicializar
// Cria 3 células e atribui o nome de LST, ANT e ATUAL.
// Retorna se houve sucesso ou não na alocação.
Início
Se CriarCelula(), então
LST ← NOVA
ANT ← NOVA
ATUAL ← NOVA
Retorna True
Retorna False
Fim

MEMÓRIA

null null

Célula Criada
Lista Linear Simplesmente Encadeada - LLSE
Algoritmo CriarCelula
// Aloca um espaço na memória do tamanho da célula definida, denominando de NOVA.
// Retorna se houve sucesso ou não na alocação.
Início
Se Alocar(NOVA), então
NOVA.INFO ← Null
NOVA.PRX ← Null
Retorna True
Retorna False
Fim

MEMÓRIA

null null

Célula Criada
Lista Linear Simplesmente Encadeada - LLSE
Algoritmo Inserir
// Recebe um valor para INFO, e se referencia à célula ANT à que será agregada.
// Criar uma célula denominada de ATUAL para receber INFO.
// Caso ANT seja a última célula da lista, faz com que ANT.PRX ← ATUAL
ATUAL
// Caso contrário, ATUAL.PRX ← ANT.PRX e ANT.PRX ← ATUAL.
// Retorna True se houve sucesso, caso contrário False
MEMÓRIA
Recebe INFO
Início
Se Inicializar(), então null

ATUAL.INFO ← INFO null


INFO
Se Vazia(ANT), então
ANT.PRX ← ATUAL
Senão ANT
ATUAL.PRX ← ANT.PRX
ANT.PRX ← ATUAL
Retorna True
MEMÓRIA
Retorna False
Fim
null

INFO null

INFO

ANT
ATUAL
Lista Linear Simplesmente Encadeada - LLSE

Algoritmo Vazia
// Recebe a célula a ser analisada denominada de VAZ.
// Verifica se VAZ.PRX = Null.
// Caso estiver, essa é a última célula da Lista, e retorna True.
// Caso contrário retorna False.
Recebe VAZ
Início
Retorna (VAZ.PRX == Null)
Fim

Algoritmo Tamanho
Algoritmo Acessar // Sendo a célula inicial da lista LST, atribui LST à ATUAL
// e em paralelo conta as iterações de comparação
// Retorna o conteúdo INFO de ATUAL
Início
Início Se ATUAL.PRX != Null, então
Retorna ATUAL.INFO Tam++
Fim ATUAL=ATUAL.PRX
Tamanho()
Fim
Lista Linear Simplesmente Encadeada - LLSE
Algoritmo Pesquisa
// Recebe a INFO a ser pesquisada, e a pesquisa sempre inicia em LST
// ATUAL recebe LST
// Percorre a lista até ATUAL.INFO = INFO.
// Caso Não encontre, isto é ATUAL.PRX= Null, retorna LST
Recebe INFO
Início
Enquanto (ATUAL.PRX != Null) & (ATUAL.INFO != INFO), faça
ATUAL ← ATUAL.PRX
Se ATUAL.INFO != INFO, então
ATUAL ← LST MEMÓRIA
Fim null

INFO null

INFO
Supondo que não encontre a
informação desejada. IT1) ATUAL
null

IT4) ATUAL INFO null

INFO

IT2) ATUAL
null

INFO null
IT3) ATUAL
INFO
Lista Linear Simplesmente Encadeada - LLSE
Algoritmo BuscaAnt
// Busca a celula anterior apontada por ATUAL, sempre iniciando em LST.
// Atribui a ANT, o LST, percorre a lista até ANT.PRX = ATUAL.
Início
ANT ← LST
Enquanto (ANT.PRX != ATUAL), faça
ANT ← ANT.PRX
Fim

MEMÓRIA
null

INFO null

IT1) PESQ INFO


ANT
null
IT2) ANT
INFO null

PESQ INFO

null
IT3) ANT
INFO null
PESQ
INFO
Lista Linear Simplesmente Encadeada - LLSE
Algoritmo Eliminar
// A célula Atual será eliminada
// Busca a célula anterior (ANT) e atribui ANT.PRX = ANT.PRX.PRX
Início
BuscaAnt() MEMÓRIA
ANT.PRX ← ANT.PRX.PRX
Tam++ null
Fim
INFO null

INFO

MEMÓRIA

null

INFO null
Lista Linear Simplesmente Encadeada - LLSE

Algoritmo Destruir
// A célula denominada de ATUAL representará a última célula
// representando o corte, parcial ou total, a lista
Célula
Início Supondo destruir a lista toda.
BuscaAnt()
Se ANT == LST, então MEMÓRIA
LST.PRX ← Null
Senão
Se ANT.PRX != Null, então null

ANT.PRX.PRX ← Null INFO null


Tam ← 0
Tamanho() INFO

Fim
MEMÓRIA

ANT null null

INFO null

INFO

Anda mungkin juga menyukai