Você está na página 1de 3

Estruturas de Dados

Listas encadeadas

Definio
Lista linear uma sequncia de itens L = [x1, x2, ..., xn], n 0, cujas propriedades estruturais
dependem apenas da posio relativa de seus itens. Se n = 0, dizemos que a lista L vazia; do
contrrio, valem as seguintes propriedades:

x1

o primeiro item de L;

xn

o ltimo item de L;

xi

precedido pelo item xi-1 e seguido pelo item xi+1 em L, para 1 < i < n.

Em outras palavras, a caracterstica fundamental de uma lista linear sua organizao


unidimensional, que permite dizer precisamente onde ela comea e onde ela termina.
Algumas operaes que podemos efetuar com uma lista linear L so as seguintes:

Inserir um item na i-sima posio de L.

Remover o item da i-sima posio de L.

Acessar o item da i-sima posio de L.

Determinar se um item x pertence a L.

Determinar o total de itens em L.

Ordenar os itens em L.

(Pereira, S.L. Estruturas de Dados Fundamentais: Conceitos e Aplicaes. So Paulo: rica,


2008, pg. 21)

Representaes de listas lineares


Existem vrias formas possveis de se representar internamente uma lista linear. A escolha de
uma destas formas depender da freqncia com que determinadas operaes sero executadas
sobre a lista, uma vez que algumas representaes so favorveis a algumas operaes, enquanto
que outras no o so, no sentido de exigir um maior esforo computacional para a sua execuo.
(Veloso, P. e outros. Estruturas de Dados. Rio de Janeiro: Campus, 1983, pg. 80)
As duas formas mais comuns de implementao de listas lineares so por contigidade e por
encadeamento dos seus elementos.
Representao por contigidade
A representao por contigidade caracteriza-se por manter os diversos elementos da lista
armazenados em endereos vizinhos na memria. Assim, imediatamente aps o final do i-simo
elemento da lista encontra-se o incio do seu prximo elemento, caso exista, ou seja, o elemento
i+1. Esta forma de representao tipicamente realizada por meio de vetores, e apesar de sua
aparente simplicidade conceitual, oferece algumas dificuldades na implementao de certas
operaes bsicas.
Representao por encadeamento
Nesta forma de representao, cada elemento da lista contm os dados teis que precisa
armazenar e, alm deles, uma referncia ao prximo elemento da lista. Eventualmente, o
elemento pode referenciar tambm o elemento anterior, constituindo assim o que se costuma
denominar de lista duplamente encadeada. A referncia a outros elementos da lista
implementada por meio de ponteiros. A principal vantagem desta abordagem a flexibilidade
quanto quantidade de elementos que a lista pode conter, pois novos elementos podem ser
Prof. Antonio Cesar de Barros Munari

Estruturas de Dados

Listas encadeadas
criados na memria sob demanda, ou seja, medida que forem necessrios, por meio de
mecanismos de alocao dinmica de memria.
O programa a seguir ilustra a implementao de uma lista linear de nmeros inteiros
representada por encadeamento em linguagem C.
#include <stdio.h>
struct regLista
{
int valor;
struct regLista *prox;
};
int main()
{
int numero;
struct regLista *inicio, *aux, *ant;
/* inicializando a varivel inicio com um endereco vazio */
inicio = NULL;
while(1)
{
printf(Informe o numero:\n);
scanf(%d, &numero);
if( numero < 0 )
break;
/* criando uma varivel struct regLista dinamicamente */
aux = (struct regLista *) malloc( sizeof(struct regLista) );
/* preenchendo os campos da varivel criada dinamicamente */
aux->valor = numero;
aux->prox = NULL;
if( inicio == NULL )
inicio = aux;
else
ant->prox = aux;
ant = aux;
}
/* imprimindo os valores da lista */
printf(\n\n\nConteudo da lista:\n);
aux = inicio;
while ( aux != NULL )
{
printf(%d\n, aux->valor);
aux = aux->prox;
}
return 0;
}

Prof. Antonio Cesar de Barros Munari

Estruturas de Dados

Listas encadeadas
Esquematicamente podemos representar o estado das variveis do programa anterior da forma
apresentada a seguir.
No incio do programa:
inicio

numero

aux

ant

Aps a digitao dos valores 5, 10, 2, 3 e -1 por parte do usurio, na sada do looping de entrada
de dados, o estado da memria seria:
numero
inicio
ant
aux

-1

valor
5

prox

valor
10

prox

valor
2

prox

valor
3

Prof. Antonio Cesar de Barros Munari

prox
/

Você também pode gostar