Você está na página 1de 22

Estrutura de Dados

Listas Usando Arranjos

Prof. Rafael A. G. Lima

Contedo:

Listas Utilizando Arranjos

Listas estticas Contgua


Listas estticas Encadeadas
Simplesmente Encadeada
Duplamente Encadeada
Circular Simples
Circular Duplamente Encadeada

Prof. Rafael A. G. Lima

Listas Estticas - Contgua

Dentre as vrias operaes comuns de um TAD (no s de uma


lista), podemos citar as seguintes como sendo as principais:

Inicializao;
Insero de um elemento;
Remoo de um elemento;
Localizao de um elemento.

Listas estticas so tipicamente implementadas atravs de arranjos.

Em uma lista esttica contgua, o sucessor de um elemento ocupa


posio fsica subsequente.

Ento, o arranjo associa o elemento a(i) com ndice i (mapeamento


sequencial).
Prof. Rafael A. G. Lima

Listas Estticas - Contgua

Caractersticas de lista esttica contgua

Elementos armazenados fisicamente em posies


consecutivas;
A insero de um elemento na posio i causa o
deslocamento para a direito do elemento a(i) ao ltimo;
A eliminao do elemento a(i) requer o deslocamento
para a esquerda do a(i+1) ao ltimo.

Prof. Rafael A. G. Lima

Listas Estticas - Contgua

As propriedades estruturadas da lista contgua esttica


permitem ento as seguintes operaes:

Qual o primeiro elemento da lista?


Qual o ltimo elemento da lista?
Quais elementos sucedem um determinado elemento?
Quantos elementos existem na lista?
Inserir um elemento na lista.
Eliminar um elemento da lista.
Localizar um elemento na lista.

Consequncia: As quatro primeiras operaes so feitas em


tempo constante. Mas, as operaes de insero, remoo e
localizao requerem mais ateno.
Prof. Rafael A. G. Lima

Listas Estticas - Contgua

Vantagem:
Acesso direto indexado a qualquer elemento da lista.
Desvantagem:
Movimentao quando um elemento eliminado/inserido;
Tamanho mximo pr-estimado (esta uma desvantagem de
qualquer lista esttica, na verdade).
Quando usar:

Listas pequenas;
Tamanho mximo bem definido;
Insero/remoo no fim da lista.
Prof. Rafael A. G. Lima

Listas Estticas - Contgua

Mostraremos um cdigo parcialmente completo das listas


estticas (contgua).

Para fins didticos, descreveremos a estrutura de dados


para inteiros, mas, obviamente, a estrutura ensinada pode
ser empregada para qualquer tipo de dado vlido.

Prof. Rafael A. G. Lima

Listas Estticas - Contgua

Faa as funes: tamanho, localiza:

Alm destas, faa tambm uma funo que receba duas


listas e concatene os elementos da segunda ao final da
primeira.

Prof. Rafael A. G. Lima

Listas Estticas - Encadeadas

Para acabar com o problema do deslocamentos dos


elementos, propomos o uso de listas encadeadas. Neste
tipo de lista, a ordem fsica dos elementos da lista no
necessariamente corresponde ordem lgica que se quer
representar.

Na
implementao

necessrio
armazenar
separadamente a informao que mostra a posio de um
dos elementos da lista, normalmente o primeiro.

Prof. Rafael A. G. Lima

Listas Estticas - Encadeadas

A principal vantagem de listas encadeadas portanto a


eliminao do problema de deslocar elementos.

As principais desvantagens so:

No se consegue acessar os elementos da lista em tempo


constante;
Mais operaes para manter a integridade dos dados.

Prof. Rafael A. G. Lima

Listas Estticas - Encadeadas

Podemos dividir as listas encadeadas em:

Simplesmente encadeadas;
Duplamente encadeada;
Circular simples;
Circular duplamente encadeada;

No caso de listas no circulares, as operaes de incluso


e remoo devem considerar alguns casos especiais que
so a incluso e remoo no comeo e final da lista.
Prof. Rafael A. G. Lima

Lista Simplesmente Encadeada

Em uma lista simplesmente encadeada, cada elemento


possui apenas a informao de que seu sucessor.

Principal problema: impossibilidade de voltar ao elemento


anterior.

Prof. Rafael A. G. Lima

Lista Simplesmente Encadeada

Para implementar a lista simplesmente encadeada esttica, cada


posio do arranjo possuir o elemento e o apontador para
o prximo elemento.

Este apontador ser o ndice no arranjo onde se encontra o


prximo elemento da lista.

Ser necessrio tambm armazenar o ndice do primeiro


elemento.

Por fim, precisaremos representar neste mesmo arranjo uma


lista de posies vazias para sabermos onde inserir um
elemento.
Prof. Rafael A. G. Lima

Lista Simplesmente Encadeada

Veja o exemplo abaixo de uma lista de caracteres com os


seguintes elementos, L={A,B,C,D,E).

Prof. Rafael A. G. Lima

Lista Simplesmente Encadeada

Mostraremos um cdigo completo parcialmente das listas


estticas simplesmente encadeada.

Prof. Rafael A. G. Lima

Exerccio
// Remove o elemento apontado por p
// Retorna -1 em caso de erro e 0 se sucesso
// No esquea de cuidar da lista de posies vaizas
int remove(Lista *l, int p)

// Localiza um elemento na lista


// Retorna o ndice do vetor onde o elemento se encontra ou
-1 caso o elemento no esteja na lista
int localiza(const Lista *l, int e)

Prof. Rafael A. G. Lima

Lista Duplamente Encadeada

Nas listas simplesmente encadeadas guardamos apenas o


indicador do prximo elemento.

Mas em alguns caso preciso obter o elemento anterior para


realizar algumas operaes como por exemplo a funo
remove. Nesta funo, para obter o elemento anterior a quem
queremos remover, temos que percorrer a lista desde a
primeira posio.

Para evitar esta busca, introduziremos um indicador para o


elemento anterior, diminuindo a complexidade computacional.

Outra utilidade das listas duplamente encadeadas que


podemos percorr-las nos dois sentidos facilmente.
Prof. Rafael A. G. Lima

Lista Duplamente Encadeada

Para entender a verso esttica, veja um exemplo abaixo


de uma lista de caracteres com os seguintes elementos,
L=={A,B,C,D,E).

Prof. Rafael A. G. Lima

Exerccio

Baseie-se no exemplo anterior para implementar uma


lista duplamente encadeada esttica, incluindo tambm
todas as operaes fundamentais j mostradas.

Prof. Rafael A. G. Lima

Listas Circulares

Uma lista circular pode ser simples ou duplamente


encadeada.

O que caracteriza as listas circulares o fato do sucessor


do ltimo elemento ser o primeiro da lista.

Prof. Rafael A. G. Lima

Listas Circulares

A principal vantagem de listas circulares que no


precisamos considerar casos especiais de incluso e
remoo de elementos (primeiro e ltimo). A no ser,
claro, o cuidado com a integridade do indicador primeiro.

Prof. Rafael A. G. Lima

Exerccio

Implemente uma lista circular duplamente encadeada


esttica, incluindo todas as operaes fundamentais j
mostradas.

Prof. Rafael A. G. Lima

Você também pode gostar