Você está na página 1de 31

Estrutura de Dados

Curso: Informática
Profa. Evaldinolia Gilbertoni Moreira
Email: evaldinolia@acad.ifma.edu.br
Listas

Lineares
Implementaçã
o Listas sequenciais e listas encadeadas

Lista Sequenciais
...
...

1 2 3 4 MAX
n

primeiro = 0
ultimo = 0

Estrutura básica: Vetor


Itens adicionais: Duas variáveis de controle primeiro
armazena o índice do primeiro elemento da lista ultimo
armazena o índice do ultimo elemento da lista.

Operações: teste de lista vazia


...

...

1 2 3 4 MAX

primeiro = 0
ultimo = 0

A lista está vazia se o primeiro item é igual ao último

Operações:
inserir item
xxxx . . .
...

1 2 3 4 MAX

primeiro = 1
ultimo = 1

Ao inserir, deve-se testar se a lista não está completa.

Operações:
inserir item
...
xxxx xxxx xxxx xxxx xxxx

xxxx . . .

1 2 3 4 MAX

primeiro = 1
ultimo = MAX

Se a lista estiver completa, não será possível adicionar o novo item.

Operações:
buscar item xxxx
xxxx xxxx xxxx . . .

xxx . . .

1 2 3 4 MAX n

primeiro = 1
ultimo = n

Localize o item e retorne a posição encontrada ou -1 caso contrário.


Operações:
remover item
xxx . . .

xxxx xxx xxx xxx . . .

1 2 3 4 MAX
n

primeiro = 1
ultimo = n

Para remover, localize o item e depois mova todos os itens um posicao para
esquerda.

Operações:
remover item
xxxx xxx xxx xxx . . .
...

1 2 3 4 MAX

primeiro = 1
ultimo = n-1
Para remover, localize o item e depois mova todos os itens uma posição para
esquerda.

Discussão
Quais as vantagens da lista sequenciais?
Quais as suas desvantagens?

Qual a complexidade da inserção ordenada?


Qual a complexidade da remoção
ordenada?
LS são fáceis de implementar
LS não podem ser utilizadas onde não se pode prever o tamanho
máximo LS tem complexidade de tempo alta para remoção e inserção
ordenada

Lista Encadeada
primeiro

nil
ultimo

Estrutura básica:
registros alocado dinamicamente

Propriedade estrutural:
cada célula aponta para a sua sucessora

Operação: inserir item


primeiro

nil

ultimo

temp <-- alocar(*Celula)


Operação: inserir item
primeiro
alocar(*Celula
temp )
nil

ultimo

temp <--
Operação: inserir item
primeiro
alocar(*Celula)
temp se primeiro == nil
nil
entao primeiro <-- temp

ultimo

temp <--

Operação: inserir item


primeiro
nil
temp
alocar(*Celula)
se primeiro == nil
ultimo entao primeiro <-- temp

temp <--

Operação: inserir item


primeiro

temp
nil

temp <--
ultimo
alocar(*Celula)
se primeiro = nil entao
primeiro <-- temp ultimo <-- temp

Operação: inserir item


primeiro
alocar(*Celula)
temp se primeiro = nil entao
nil
primeiro <-- temp
ultimo <-- temp
ultimo

temp <--
Operação: inserir item
primeiro
alocar(*Celula)
temp se primeiro = nil entao
nil
primeiro <-- temp
ultimo <-- temp
ultimo temp^.prox <-- nil

temp <--
Operação: inserir item
primeiro
temp

nil

ultimo

temp <-- alocar(*Celula)

Operação: inserir item


primeiro
temp

nil

ultimo

temp <--
alocar(*Celula)
ultimo^.prox <-- temp

Operação: inserir item


primeiro
temp

ultimo

temp <-- alocar(*Celula)


ultimo^.prox <-- temp

Operação: inserir item


primeiro

temp

ultimo
temp <-- alocar(*Celula)
ultimo^.prox <-- temp
ultimo <-- temp

Operação: p q

remover item p <-- buscarAnterior(L,x)

primeiro
primeiro

nil p q
ultimo

p <-- buscarAnterior(L,x)

Operação:
remover item
primeiro

nil p q
ultimo

p <-- buscarAnterior(L,x)
q <-- p^.prox
Operação:
remover item
primeiro

nil p q
ultimo

p <-- buscarAnterior(L,x)
q <-- p^.prox
Operação:
remover item
primeiro

nil p q
ultimo

p <-- buscarAnterior(L,x)
q <-- p^.prox
Operação: p^.prox <-- q^.prox

remover item
primeiro

nil p q
ultimo

p <-- buscarAnterior(L,x)
q <-- p^.prox
Operação: p^.prox <-- q^.prox

remover item
primeiro

nil p q
ultimo

p <-- buscarAnterior(L,x)
q <-- p^.prox
Operação: p^.prox <-- q^.prox
desalocar(q)

remover item
primeiro

nil
ultimo

nil

Operação:
remover item p q

p <-- buscarAnterior(L,x)
q <-- p^.prox
p^.prox <-- q^.prox
desalocar(q)

nil
ultimo

E se ... Atividade 01 de lista


E se o elemento a ser removido for o primeiro da lista?
E se a lista tiver apenas um elemento?
Apresente um algoritmo para as situações mencionadas acima.

Para saber mais Cap.


10 da apostila de Celes e Rangel

Você também pode gostar