• Nenhum resultado encontrado

EDJava-Aula03-ListasLinearesSequencialeEncadeada

N/A
N/A
Protected

Academic year: 2021

Share "EDJava-Aula03-ListasLinearesSequencialeEncadeada"

Copied!
30
0
0

Texto

(1)

Estrutura de Dados I

Humberto Rocha

Aula 03:Listas

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

(2)

Listas

 Uma lista é uma coleção de elementos do mesmo tipo dispostos linearmente que podem ou não seguir uma determinada organização.

 Por exemplo: [E1, E2, E3, E4, E5, ..., En], onde n deve ser > = 0.  Lista de Pagamentos: • Prestação do carro; • Cartão de crédito; • Conta de luz; • Condomínio;

(3)

Listas

 “Estrutura dinâmica/estática caracterizada por uma sequência ordenada de elementos”. (VILLAS et al, 1993)

 Composta por Nós

 Exemplos: Lista Telefônica, lista de clientes de uma agência bancária, lista de setores, etc.

(4)

4

Listas

Propriedades

Existem n elementos na sequência;

 E1 é o primeiro elemento da sequência;  En é o último elemento da sequência;

 Para todo i, j entre 1 e n, se i<j, então o

(5)

5

Listas

Operações realizadas com listas

 Criar uma lista vazia;

 Verificar se uma lista está vazia;  Obter o tamanho de uma lista;

 Obter/modificar o valor do elemento em uma

(6)

6

Listas

Operações realizadas com listas (cont.)

 Obter a posição do elemento cujo valor é

dado;

 Inserir um novo elemento após (antes) de uma

determinada posição na lista;

 Remover um elemento em uma determinada

posição.

 Exibir os elementos de uma lista;  Concatenar duas listas.

(7)

Formas de Representação de listas  Sequencial  Encadeada

Listas

casa carro cama mesa L

(8)

Lista Sequencial

 Explora a sequencialidade da memória do

computador.

 Utiliza estruturas estáticas

(9)

9

Lista Sequencial

 Lista armazenada em memória na forma sequencial.

 A implementação de operações pode ser feita utilizando array, associando o elemento a(i) com o índice i

(10)

Cap. 10 - 10

Lista Sequencial

 Quando criamos uma lista para utilizá-la como uma estrutura de dados, pode-se utilizar como contêiner para o armazenamento dos dados um vetor ou uma matriz ;

 Lista de pagamentos: prestação do carro, cartão de crédito, conta de luz, condomínio, TV a cabo, prestação do crediário.

(11)

11

Lista Sequencial

Características

 Elementos são armazenados fisicamente em

posições consecutivas

A inserção de um elemento na posição a(i)

causa o deslocamento a direita do elemento a(i) ao último

 A remoção do elemento a(i) requer o

deslocamento à esquerda do elemento a(i+1) ao último

(12)

12

Lista Sequencial

O que devemos saber sobre as listas?

 Se está vazia  Se está cheia

 Número de elementos existentes

 Qual elemento ocupa uma determinada

posição

 Como inserir e remover elementos;

 Como realizar busca e percorrer seus

(13)

13

Lista Sequencial

Desvantagens:

 Não aloca memória de forma eficiente

 Tamanho máximo pré-estimado

 Não disponibiliza flexibilidade de manutenção

 Movimentação quando um elemento é inserido ou removido

 Memória ocupada mesmo quando a lista está

(14)

14

Lista Sequencial

Vantagens

 Acesso direto indexado a qualquer elemento

da lista;

Tempo constante para acessar o elemento i

(depende apenas do índice).

Quando usar?

 Principalmente quando o tamanho máximo é

(15)

 Sequencia de elementos encadeados por

referências

 Utiliza estruturas dinâmicas

Lista Encadeada

casa carro cama mesa L

(16)

Lista Encadeada

 Quando usamos a alocação dinâmica: 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

casa carro cama mesa L

(17)

Lista Encadeada

 Elementos da estrutura não ocupam

necessariamente espaços sequenciais na memória;

 Tipo de lista em que a sequencia de elementos

são encadeados por referências

 Possuem referências que guardam o endereço do

registro sucessor (próximo elemento);

 Elementos são alocados dinamicamente;

casa carro cama mesa

(18)

Desvantagens

 Na estrutura encadeada, a ligação entre os nós utiliza

mais espaço, visto que um novo campo foi incluído (campo prox)

 Este fato não representa necessariamente mais memória utilizada

 O espaço destinado para a informação pode ser melhor aproveitado (tamanho da lista não é fixo)

Lista Encadeada

x y z

a x y z

(19)

Vantagens

 O uso das referências dá flexibilidade à estrutura nas

inserções e retiradas de elementos

 Não é mais necessário realizar movimentações dos elementos da lista (inserção/remoção)

Lista Encadeada

x y z

a x y z

(20)

Quando usar?

 Principalmente quando o tamanho máximo NÃO

é bem definido.

(21)

Outras características

 Algoritmos mais complexos;

 O último nó de cada lista deverá apontar para NULL;  Sinalização do final da lista.

 Para acessar um nó qualquer, é necessário percorrer

os elementos da lista

 Na sequencial, isto é feito de forma direta

 Melhor aproveitamento de memória

 Espaço para o nó não é alocado previamente

 Alocação pode ser feita com a memória

fragmentada

(22)

Lista Sequencial

 Explora a sequencialidade da memória do

computador.

 Utiliza estruturas estáticas

Lista Encadeada

 Sequência de elementos encadeados por

ponteiros

 Utiliza estruturas dinâmicas

(23)

23

Sequencial

 Fica armazenada em memória de forma

sequencial

 No momento da criação, todo o espaço é

reservado

 Mesmo quando ainda não está sendo utilizado

Encadeada

 Não reserva memória previamente

 O local de memória é alocado para o novo

elemento no momento da inserção

 Ou seja, ela pode crescer indefinidamente

 Até onde a memória do computador suportar

(24)

24

Lista Simplesmente Encadeada

 Tipo de lista encadeada em que cada elemento possui

apenas uma ligação;

(25)

25

Lista Simplesmente Encadeada

Operações sobre listas:

 Definição da estrutura de dados;  Criação da lista vazia;

 Verificação de lista vazia;

 Obtenção do tamanho da lista;

 Obter o valor de uma determinada posição;

 Obter a posição do elemento cujo valor é dado;  Inserir um elemento na lista, dada sua posição;

 Remover um elemento de uma determinada

(26)

Lista Simplesmente Encadeada

Algoritmo ExemploListaSimples

// Referências para os nós simples

Tipo apontador: ^NoSimples

// Registro que monta a estrutura para os nós

NoSimples = registro valor: inteiro

prox: apontador fim

// Registro que monta a estrutura para a lista

ListaSimples = registro primeiro: apontador ultimo: apontador fim

inicio

// Criando uma lista inicialmente vazia

ListaSimples.primeiro  nulo ListaSimples.ultimo  nulo

(27)

Cap. 10 - 27

Lista Simplesmente Encadeada

(28)

Cap. 10 - 28

Listas Simplesmente Encadeadas

Procedimento InsereNo_fim (var novoNo: NoSimples) Inicio

// O último nó da lista deve ter o prox como nulo

novoNo^.prox  nulo

// Se a lista estiver vazia

Se (ListaSimples.primeiro = nulo) Então ListaSimples.primeiro  novoNo

Fim-Se

// Se a lista não estiver vazia

Se (ListaSimples.ultimo <> nulo) Então ListaSimples.ultimo^.prox  novoNo Fim-Se

// Independe se a lista está vazia ou não

ListaSimples.ultimo  novoNo Fim

(29)

29

Exercícios

1. Defina Listas Sequenciais e apresente suas principais características.

2. Defina Listas Encadeadas e apresente suas principais características.

3. Pesquise um exemplo prático de situação onde poderiam ser utilizadas Listas Sequenciais.

4. Descreva um algoritmo demonstrando a situação pesquisada.

5. Descreva um procedimento em algoritmo para cada uma das operações que podem ser trabalhadas com Listas Sequenciais. Comente o algorimo linha a linha.

6. Pesquise um exemplo prático de situação onde poderiam ser utilizadas Listas Encadeadas.

7. Descreva um algoritmo demonstrando a situação pesquisada.

8. Descreva um procedimento em algoritmo para cada uma das operações que podem ser trabalhadas com Listas Encadeadas. Comente o algorimo linha a linha.

(30)

30

Referências

• SANDRA PUGA & GERSON RISSETTI. Lógica de

Programação e Estrutura de Dados. Prentice-Hall, 2004.

• PREISS, Bruno. Estruturas de Dados e Algoritmos:

Padrões 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.

Referências

Documentos relacionados

As pontas de contato retas e retificadas em paralelo ajustam o micrômetro mais rápida e precisamente do que as pontas de contato esféricas encontradas em micrômetros disponíveis

Código Descrição Atributo Saldo Anterior D/C Débito Crédito Saldo Final D/C. Este demonstrativo apresenta os dados consolidados da(s)

Ainda que não se utilizem diretamente suas obras, os fundamentos por ele expostos – há mais de um século – ainda permanecem vivos nas discussões tributárias

E perceberás, então, como o Cristo fustigado na cruz, que os teus mais acirrados perseguidores são apenas crianças de curto entendimento e de

001 375731 LUIZ SEVERO BEM JUNIOR ACESSO DIRETO (SEM PRÉ-REQUISITO) - NEUROCIRURGIA 002 375826 CLAUDIONOR NOGUEIRA COSTA SEGUNDO ACESSO DIRETO (SEM PRÉ-REQUISITO) - NEUROCIRURGIA

Conforme as Tabelas 2 e 3, os valores médios de resistên- cia e módulo de elasticidade a compressão paralela às fibras, a resistência ao fendilhamento, e a resistência ao

Apesar de o mercado acionário brasileiro ter se tornado mais importante para a economia brasileira, sobretudo entre o período de 2002 para 2005 (Tabela 3), sua repre- sentatividade

b) ACRESCENTE 36 unidades de milhar, 90 dezenas e 5 unidades ao número que corresponde à capacidade de pessoas desse estádio. Observe os calendários a seguir. a)