Você está na página 1de 25

Estrutura de Dados I Aula 05:Listas

Humberto Rocha

Slides originais dos professores Yuri Morais Bezerra, Filipe Teixeira Marques e Sandra Puga

Listas
Uma lista uma coleo de elementos do mesmo tipo dispostos linearmente que podem ou no seguir uma determinada organizao. Por exemplo: [E1, E2, E3, E4, E5, ..., En], onde n deve ser > = 0. Lista de Pagamentos:
Prestao do carro;
Carto de crdito; Conta de luz; Condomnio; TV a cabo;
Cap. 10 - 2

Listas Lineares

Definio:
Estrutura

dinmica/esttica caracterizada por uma sequncia ordenada de elementos. (VILLAS et al, 1993)

Composta por Ns. Exemplos:


Lista

Telefnica, lista de clientes de uma agncia bancria, lista de setores de um disco, etc.

Representao:

Listas Lineares

Propriedades

Existem n elementos na sequncia; E1 o primeiro elemento da sequncia; En o ltimo elemento da sequncia; Para todo i, j entre 1 e n, se i<j, ento o elemento Ei antecede o elemento Ej;

Operaes realizadas com listas

Criar uma lista vazia; Verificar se uma lista est vazia; Obter o tamanho de uma lista; Obter/modificar o valor do determinada posio na lista;

elemento

em

uma

Listas Lineares

Operaes (cont.)
Obter

realizadas

com

listas

dado; Inserir um novo elemento aps (antes) de uma determinada posio na lista; Remover um elemento em uma determinada posio. Exibir os elementos de uma lista; Concatenar duas listas.
5

a posio do elemento cujo valor

Listas Lineares

Formas de Representao de listas


Sequencial b) Encadeada
a)

Lista Sequencial

Explora a sequencialidade da memria do computador.

Utiliza estruturas estticas

Listas Sequenciais
Arranjos: quando criamos uma lista para utiliz-la como uma estrutura de dados, pode-se utilizar como continer para o armazenamento dos dados um vetor ou uma matriz ; Lista de pagamentos: prestao do carro, carto de crdito, conta de luz, condomnio, TV a cabo, prestao do credirio.
Cap. 10 - 7

Listas Encadeadas
Sequencia

referncias
cs aa L

de elementos encadeados por

cro ar

cm aa

ma e s

Utiliza

estruturas dinmicas

Listas Encadeadas
Encadeadas: quando usamos a alocao dinmica: precisamos referenciar os elementos seguinte e anterior de cada elemento da lista. O elemento 1 aponta para o elemento 2, o elemento 2 aponta para o elemento 3 e assim por diante:

E1

E2

E3

En

Cap. 10 - 9

Lista Sequencial

Lista armazenada em memria na forma sequencial.


A

implementao de operaes pode ser feita utilizando array, associando o elemento a(i) com o ndice i sequencial

Mapeamento

10

Lista Sequencial

Caractersticas
Elementos

so armazenados fisicamente em posies consecutivas A insero de um elemento na posio a(i) causa o deslocamento a direita do elemento a(i) ao ltimo A remoo do elemento a(i) requer o deslocamento esquerda do elemento a(i+1) ao ltimo
11

Lista Sequencial

O que devemos saber sobre as listas?


Se

est vazia Se est cheia Nmero de elementos existentes Qual elemento ocupa uma determinada posio Como inserir e remover elementos; Como realizar busca e percorrer seus elementos

12

Lista Sequencial

Vantagens

Acesso direto indexado a qualquer elemento da lista; Tempo constante para acessar o elemento i (depende apenas do ndice). Movimentao quando eliminado/inserido elemento; Tamanho mximo pr-estimado; Listas pequenas; Insero/Remoo no fim da lista; Quando o tamanho mximo bem definido.
13

Desvantagens

um

Quando usar?

Lista Sequencial

Listas Sequenciais: Desvantagens:


No

aloca memria de forma eficiente


flexibilidade
um elemento

Tamanho mximo pr-estimado

No

disponibiliza manuteno
Movimentao quando inserido ou removido

de

Memria

ocupada mesmo quando a lista est vazia.


14

Lista Encadeada
Elementos

da estrutura no ocupam necessariamente espaos sequenciais na memria; Tipo de lista em que a sequncia de elementos so encadeados por referncias

Possuem referncias que guardam o endereo do registro sucessor (prximo elemento); Elementos so alocados dinamicamente;

casa
Lista Encadeada

carro

cama

mesa

Listas Lineares: Encadeada X Sequencial

Lista Sequencial

Explora a sequencialidade da memria do computador.

Utiliza estruturas estticas de elementos encadeados por

Lista Encadeada
Sequncia

ponteiros Utiliza estruturas dinmicas casa


Lista Encadeada

carro

cama

mesa

Listas Lineares: Encadeada X Sequencial

Sequencial
Fica

armazenada em memria de forma sequencial No momento da criao, todo o espao reservado Mesmo quando ainda no est sendo utilizado

Encadeada
No

reserva memria previamente O local de memria alocado para o novo elemento no momento da insero Ou seja, ela pode crescer indefinidamente

At onde a memria do computador suportar


17

Lista Linear Encadeada

Listas Encadeadas (cont.)

Na estrutura encadeada, a ligao entre os ns utiliza mais espao, visto que um novo campo foi includo (campo prox)

Este fato no representa necessariamente mais memria utilizada O espao destinado para a informao pode ser melhor aproveitado (tamanho da lista no fixo)

O uso das referncias d flexibilidade estrutura nas inseres e retiradas de elementos

No mais necessrio realizar movimentaes dos elementos da lista (insero/remoo)


a
a

x
z

Lista Linear Encadeada

Caractersticas
Algoritmos

mais complexos; O ltimo n de cada lista dever apontar para NULL;

Sinalizao do final da lista.

Para

acessar um n qualquer, necessrio percorrer os elementos da lista


Na sequencial, isto feito de forma direta

Melhor

aproveitamento de memria

Espao para o n no alocado previamente Alocao pode ser feita com a memria fragmentada

Lista Simplesmente Encadeada


Tipo de lista encadeada em que cada elemento possui apenas uma ligao; Veremos outras listas com ligaes diferentes Operaes sobre listas:

Definio da estrutura de dados; Criao da lista vazia; Verificao de lista vazia; Obteno do tamanho da lista; Obter o valor de uma determinada posio; Obter a posio do elemento cujo valor dado; Inserir um elemento na lista, dada sua posio; Remover um elemento de uma determinada posio.

20

Listas Simplesmente Encadeadas


Algoritmo ExemploListaSimples Tipo apontador: ^NoSimples NoSimples = registro valor: inteiro prox: apontador fim ListaSimples = registro primeiro: apontador ultimo: apontador fim Inicio ListaSimples.primeiro nulo ListaSimples.ultimo nulo

Cap. 10 - 21

Listas Simplesmente Encadeadas


Procedimento InserirNo no final

Cap. 10 - 22

Listas Simplesmente Encadeadas


Procedimento InsereNo_fim (var novoNo: NoSimples)
Inicio novoNo^.prox nulo Se (ListaSimples.primeiro = nulo) Ento ListaSimples.primeiro novoNo Fim-Se Se (ListaSimples.ultimo <> nulo) Ento

Lista.Simples.ultimo^.prox novoNo
Fim-Se ListaSimples.ultimo novoNo

Fim

Cap. 10 - 23

Exerccios
1. Defina Listas Lineares Sequenciais e apresente suas principais caractersticas. 2. Defina Listas Lineares Encadeadas e apresente suas principais caractersticas. 3. Pesquise um exemplo prtico de situao onde poderiam ser utilizadas Listas Lineares Sequenciais. 4. Descreva um algoritmo demonstrando a situao pesquisada. 5. Descreva um procedimento em algoritmo para cada uma das operaes que podem ser trabalhadas com Listas Lineares Sequenciais. Comente o algorimo linha a linha. 6. Pesquise um exemplo prtico de situao onde poderiam ser utilizadas Listas Lineares Encadeadas. 7. Descreva um algoritmo demonstrando a situao pesquisada. 8. Descreva um procedimento em algoritmo para cada uma das operaes que podem ser trabalhadas com Listas Lineares Sequenciais. Comente o algorimo linha a linha. 24

Referncias
SANDRA PUGA & GERSON RISSETTI. Lgica de Programao e Estrutura de Dados. Prentice-Hall, 2004.

PREISS, Bruno. Estruturas de Dados e Algoritmos: Padres de projetos orientados a objetos com Java. Campus, 2001. VELOSO. P. Estrutura de dados. Campus, 1995.
HOROWITZ, E. Fundamentos de Estruturas de Dados. Campus, 1987.

25