Você está na página 1de 37

.: ESTRUTURA DE DADOS :.

LISTAS ENCADEADAS: ESTTICAS E DINMICAS

Andr Macedo Santana


andremacedo@ufpi.edu.br

Listas Encadeadas Estticas


Conceitos
Lista Encadeada consiste em uma sequencia de Ns, cuja relao de sucesso estabelecida por um endereo do prximo N; Cada N, ou elemento da lista, um agregado do tipo estrutura com dois componentes denominados de membros:
uma varivel de estrutura (info); Uma varivel ponteiro (prox)

Para trabalharmos com listas encadeadas necessrio definir um ponto inicial (ponteiro para o incio da lista) que a partir da podemos inserir, remover ou realizar uma busca na lista;

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Estticas


Estrutura e Operaes
Estrutura Lista: Procedimentos bsicos sobre listas:
inicializar lista(); alocar um n(); inserir um n(); desalocar um n(); excluir um n(); consultar um n();

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Estticas


Operaes: Operaes : Inicializar Lista
Antes de inserir algum elemento na lista, temos que executar uma rotina de inicializao. Essa rotina, inicializar_lt(), realiza o encadeamento prvio do vetor e armazena o valor -1 no ltimo n do vetor para informa que ali o fim da estrutura;

Inicializar lista

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Estticas


Operaes: Operaes : Alocar N
A funo alocaNo_lt() responsvel pela alocao do n que ser inserido na lista. Aps a obteno do endereo do novo n, a varivel disp recebe o prximo disponvel da lista para futuras alocaes;

Alocar um N

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Estticas


Operaes: Operaes : Inserir N
Uma vez inicializada a lista [ inicializar_lt() ] bem como a alocao de um n da lista [alocaNo_lt() ], podemos fazer ento a insero de uma elemento;

Inserir um N

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Estticas


Exemplo

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Estticas


Visualizao

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Estticas


Operaes: Operaes : Excluir N
Aps a liberao de um n de uma lista encadeada, devemos liberar o endereo ou o espao de memria. A liberao do n removido feita colocando-o na lista de disponveis para uso posterior;

Desaloca N

Excluir N Depois

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Estticas


Operaes: Operaes : Excluir N

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Estticas


EXERCCIOS

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Conceitos
Para atacar o problema da dimensionalidade das listas lineares pode-se utilizar estruturas de dados que cresam conforme precisamos armazenar novos elementos e diminuam conforme precisamos retirar elementos armazenados anteriormente Listas Encadeadas; Em uma Lista Encadeada, para cada elemento inserido na estrutura, alocamos um espao de memria para armazen-lo. Dessa forma, o espao total de memria gasto proporcional ao nmero de elementos armazenado; Problema: no podemos garantir que os elementos armazenados em uma lista encadeada ocuparo um espao de memria contgua. Portanto no temos acesso direto aos elementos dessa lista; Para percorrer os elementos de uma lista encadeada, devemos explicitamente guardar o seu endereo, o que feito armazenando-se, junto com a informao, um ponteiro para o prximo elemento da lista;
Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Estrutra e Operaes
Estrutura Lista:

Observe que a estrutura definida auto-referenciada, pois, alm do campo para armazenar informao, h um campo que um ponteiro para um prxima estrutura do mesmo tipo; Procedimentos bsicos sobre listas:
criar a lista(); alocar um n(); inserir um n(); liberar um n(); excluir um n();
Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Oeraes: Oeraes : Criar e Alocar
Uma funo para criar uma Lista deve ter como valor de retorno uma Lista sem nenhum elemento. Como a Lista representada pelo ponteiro para o primeiro elemento, uma Lista vazia representada pelo ponteiro para NULL;

Criar Lista

Uma funo para alocar um N em uma Lista deve retornar um elemento do tipo ponteiro para com o endereo do novo N alocado;

Alocar N
Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Inserir[ Inserir[Lista com Descritor] Descritor]

Inserir no incio

Inserir no meio

Inserir no fim
Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Inserir [Lista sem Descritor] Descritor]

Inserir no incio

Inserir no meio

Inserir no fim
Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Inserir no inicio

Inserir no inicio [Lista com Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Inserir no inicio

Inserir no inicio [Lista sem Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Inserir no meio

Inserir no meio[Lista com Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Inserir no meio

Inserir no meio [Lista sem Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Inserir no fim

Inserir no fim [Lista com Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Inserir no fim

Inserir no fim [Lista sem Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Inserir N
Uma vez criada uma lista vazia, podemos inserir nela novos elementos e para cada elemento inserido, devemos alocar dinamicamente pores de memria necessria para armazenar o elemento e encade-lo na lista existente;

Inserir N

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Excluir [Lista com Descritor] Descritor]

Excluir no incio

Excluir no meio

Excluir no fim

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Excluir [Lista sem Descritor] Descritor]

Excluir no incio

Excluir no meio

Excluir no fim

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Excluir no inicio

Remover no inicio [Lista com Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Excluir no inicio

Remover no inicio [Lista sem Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Excluir no meio

Remover no meio [Lista com Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Excluir no meio

Remover no meio [Lista sem Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Excluir no fim

Remover no fim [Lista com Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Excluir no fim

Remover no fim [Lista sem Descritor]


Estruturas de Dados Andr M. Santana UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Operaes: Operaes : Excluir N
Aps a excluso de um N da lista, a rea de memria deve ser liberada;

Liberar N

Uma funo para remover um N da lista deve possuir como parmetro de entrada o endereo do elemento que precede ao que ser removido;

Remover N

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Manuteno de Listas Ordenadas
A funo de insero apresentada anteriormente armazena os elementos sempre no incio da Lista. Porm, se quisermos manter os elementos da Lista em uma determinada ordem, temos que encontrar a posio correta para inserir o novo elemento; Se a ordem de armazenamento no for importante, opta-se por inserir sempre no incio, pois o custo computacional desta operao independe do nmero de elementos da lista;

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Recursividade
Uma Lista pode ser definida de forma recursiva: uma lista vazia, ou um elemento seguido de uma (sub) lista

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Recursividade - Exemplo

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


Listas Circulares
Algumas aplicaes necessitam representar conjuntos cclicos. Por exemplo, aplicaes que manipulam figuras geomtricas onde as arestas que agrupam uma face podem ser agrupadas de maneira circular;

Em uma Lista Circular, o ltimo elemento tem como prximo o primeiro elemento da Lista. Assim, necessrio um ponteiro para o primeiro elemento da Lista; Para percorrer uma Lista Circular, visitamos todos os elementos a partir do ponteiro inicial at alcanar novamente esse mesmo elemento;

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Listas Encadeadas Dinmicas


EXERCCIOS

Estruturas de Dados

Andr M. Santana

UFPI - CCN - DIE

Você também pode gostar