Your SlideShare is downloading. ×
Listas:  conceito e estáticas
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Listas: conceito e estáticas

328
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
328
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Listas: Conceito e estáticas Prof: Sergio Souza Costa
  • 2. Sobre mim Sérgio Souza Costa Professor - UFMA Doutor em Computação Aplicada (INPE) prof.sergio.costa@gmail.com https://sites.google.com/site/profsergiocosta/home http://www.slideshare.net/skosta/presentations?order=popular https://twitter.com/profsergiocosta http://gplus.to/sergiosouzacosta
  • 3. Roteiro ● ● ● Lista: Definição e tipo abstrato de dados. Lista como estrutura de dados contígua.
  • 4. Roteiro ● ● ● ● Lista: Definição e tipo abstrato de dados. Lista como estrutura de dados contígua. Lista como estrutura encadeada. Codificação de listas encadeadas em C.
  • 5. Exemplos de listas
  • 6. Exemplos de listas Coisas a fazer Compras Catálogo telefônico
  • 7. Qual propriedade é comum a todas estas listas ?
  • 8. Qual propriedade é comum a todas estas listas ? Linearidade
  • 9. LISTA: DEFINIÇÃO FORMAL Um lista L é uma coleção de n elementos x1, x2, x3 ... Xn, para n >= 0. 1 Se n > 0, entao x1 é o primeiro e xn o último elemento. 2 Para i = {1,2,...,n}, xi é precedido por xi-1 é seguido por xi+1. 3 Se os elementos x1..xn são do mesmo tipo a lista é denominada homogênea, caso contrário é heterogênea. 4 Se n é igual a 0, então a lista é vazia.
  • 10. LISTA: Tipo de dados abstrato Descrevendo listas como um tipo abstrato de dados, com 5 operações básicas. Operação Descrição Tamanho (L) Retorna o número de elementos de L Inserir (L,x) Insere um elemento x a L Busca (L, x) Busca um elemento x em L, retorna seu indice. ElementoEm(L, i) Retorna um elemento de L localizado em i. Remove (L, i) Remove um elemento de L localizado em i.
  • 11. Qual a vantagem de descrever as estruturas de dados como tipos abstrato de dados ?
  • 12. Qual a vantagem de descrever as estruturas de dados como tipos abstrato de dados ? Abstrair os detalhes da implementação, ocultando a representação computacional. TAD define a interface apenas.
  • 13. Qual a vantagem de descrever as estruturas de dados como tipos abstrato de dados ? Pode então mudar a es Abstrair deentação repres detalh tação. sobre a implemenal sem que computacion Ocultacliereprdaentação o r a nte es aplicação compuerceba”.. TAD “p tacional define a interface apenas.
  • 14. Como representar as listas na memoria do computador?
  • 15. Como representar as listas na memoria do computador? Estruturas contíguas Estruturas Encadeadas
  • 16. Como representar as listas na memoria do computador? Estruturas contíguas Estruturas Encadeadas
  • 17. Representação computacional na memoria Áreas contíguas da memoria, x2 é adjacente a x1 e x3. x1 x2 x3 x4 xxxx xxxx xxxx xxxx 1 2 3 4 xn ... xxx n
  • 18. Representação computacional na memoria Áreas contíguas da memoria, x2 é adjacente a x1 e x3. x1 x2 x3 x4 xxxx xxxx xxxx xxxx 1 2 3 4 xn ... xxx n Qual estrutura que vocês trabalham que tem esta propriedade?
  • 19. Representação computacional na memoria Áreas contíguas da memoria, x2 é adjacente a x1 e x3. x1 x2 x3 x4 xxxx xxxx xxxx xxxx 1 2 3 4 xn ... xxx n Qual estrutura que vocês trabalham que tem esta propriedade? Os arranjos, também conhecido como vetores.
  • 20. Definição Pode-se implementar uma lista de no máximo MAX elementos, como um arranjo A[1..MAX]. Este arranjo tem um atributo N[A] que retorna a quantidade de elementos. Para MAX=7, temos o seguinte arranjo A:
  • 21. Definição Pode-se implementar uma lista de no máximo MAX elementos, como um arranjo A[1..MAX]. Este arranjo tem um atributo N[A] que retorna a quantidade de elementos. Para MAX=7, temos o seguinte arranjo A: Observem que vamos empregar a notação similar ao do clássico livro (Cormen)
  • 22. Operações: Tamanho Tamanho ( A) 1. retorna N[A] 1 A 15 2 6 3 2 4 9 N[A] = 4 5 6 7
  • 23. Operações: Tamanho Tamanho ( A) 1. retorna N[A] 1 A 15 2 6 3 2 4 5 6 7 9 N[A] = 4 Como faço para saber se a lista esta vazia ?
  • 24. Operações: Tamanho Tamanho ( A) 1. retorna N[A] 1 A 15 2 6 3 2 4 5 6 7 9 N[A] = 4 Como faço para saber se a lista esta vazia ? Se Tamanho (A) = 0 então faço algo
  • 25. Operações: Inserção 1 Inserir( A, x) 1. Se N[A] < MAX então 2. N[A] <- N[A] + 1 3. A[N[A]] <- x 4. se não 5. erro (“lista cheia”); A 15 2 6 3 2 4 5 6 7 5 6 7 9 N[A] = 4 Inserir ( A, 20) 1 A 15 2 6 3 2 4 9 20 N[A] = 5
  • 26. Problema: Nas estruturas contíguas é a necessário definir o seu tamanho a priori, podendo levar a: ● ● um superdimensionamento (desperdiço de mémoria) ou um subdimensionamento (impossibilidade de inserir mais elementos).
  • 27. Operações: Busca 1 Busca ( A, x) 1. para i <- 1 ate N[A] faça 2. se A[i] = x então 3. retorna i 4. fim se 5. fim para 6. retorna 0 A 15 2 6 3 2 4 9 5 6 7 20 Busca ( A, 2) 1 A 15 2 6 3 2 Explorados 4 9 5 6 7 20 Não explorados
  • 28. Operações: Busca 1 Busca ( A, x) 1. para i <- 1 ate N[A] faça 2. se A[i] = x então 3. retorna i 4. fim se 5. fim para 6. retorna 0 Essa busca é conhecida como linear ou sequencial, vocês aprenderam outras abordagens. A 15 2 6 3 2 4 9 5 6 7 20 Busca ( A, 2) 1 A 15 2 6 3 2 Explorados 4 9 5 6 7 20 Não explorados
  • 29. Operações: ElementoEm Como são áreas contíguas e indexadas, basta retornar o elemento em A[i]. 1 ElementoEm( A, i) 1. retorna A[i] A 15 2 6 ElementoEm(A, 4) 3 2 4 9 5 20 9 6 7
  • 30. E a remoção ?
  • 31. E a remoção ? Lembre que posso querer remover um elemento em qualquer posição, no inicio, meio ou fim.
  • 32. E a remoção ? Lembre que posso querer remover um elemento em qualquer posição, no inicio, meio ou fim. Precisamos manter as propriedades da lista, xi+1 suceder xi.
  • 33. Operações: Remover Remove um elemento com um dado índice i. Movo os elemento de A[i+1..n] para A[i.. n]. 1 A 15 2 6 3 2 4 9 5 6 7 20 N[A] = 5 Remover( A, k) 1. para i <- k até N[A]-1 faça 2. A[i] = A[i+1] 3. fim para 4. N[A] = N[A] - 1 5. retorna 0 Remover ( A, 3) 1 A 15 2 6 3 9 4 5 20 20 N[A] = 4 6 7
  • 34. Pontos chaves ● ● ● ● Estrutura de dados lista é uma das mais importantes e fundamentais. Conceito chave da lista é a linearidade, podemos falar em primeiro, segundo .... Pode ser codificada usando estruturas contíguas e encadeadas Estruturas contíguas o tamanho é dado a priori.