You are on page 1of 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 xn xi

o primeiro item de L; o ltimo item de L; 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 1

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: numero inicio 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 prox /

Prof. Antonio Cesar de Barros Munari

You might also like