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)
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;
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
Listas Lineares
Lista Sequencial
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
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
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
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
No
disponibiliza manuteno
Movimentao quando inserido ou removido
de
Memria
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
Lista Sequencial
Lista Encadeada
Sequncia
carro
cama
mesa
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
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)
x
z
Caractersticas
Algoritmos
Para
Melhor
aproveitamento de memria
Espao para o n no alocado previamente Alocao pode ser feita com a memria fragmentada
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
Cap. 10 - 21
Cap. 10 - 22
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