programação de computadores ii - ic.uff.brrosseti/progii/2013-2/aula_05_listas_lineares.pdf ·...
TRANSCRIPT
![Page 1: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/1.jpg)
Conteúdo: Listas lineares
Material elaborado pelos profs. Anselmo Montenegro e Marcos Lage com contribuições do prof. Leandro A. F. Fernandes
Programação de Computadores II TCC-00.174
Profs.: Leandro A. F. Fernandes(A1) & Marcos Lage(B1) & Isabel Rosseti(C1)
(Turma A1) www.ic.uff.br/~laffernandes (Turma B1) www.ic.uff.br/~mlage (Turma C1) www.ic.uff.br/~rosseti
![Page 2: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/2.jpg)
Estrutura de Dados
Uma estrutura de dados armazena dados na memória do computador a fim de permitir o acesso eficiente dos mesmos.
23/09/2013 Programação de Computadores II 2
Introdução
![Page 3: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/3.jpg)
Estrutura de Dados
Uma estrutura de dados bem projetada permite a manipulação eficiente, em tempo e em espaço, dos dados armazenados através de operações específicas.
23/09/2013 Programação de Computadores II 3
Introdução
![Page 4: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/4.jpg)
Listas Lineares
Listas Lineares: São de fácil manipulação.
Agrupam informações referentes a um conjunto de
elementos que se relacionam entre si
23/09/2013 Programação de Computadores II 4
Introdução
![Page 5: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/5.jpg)
Listas Lineares
Uma lista linear é um conjunto de n elementos
x1, x2, ..., xn,
cuja propriedade estrutural baseia-se nas posições relativas de seus elementos.
23/09/2013 Programação de Computadores II 5
Definição
![Page 6: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/6.jpg)
Listas Lineares
Uma lista linear é um conjunto de n elementos
x1, x2, ..., xn,
cuja propriedade estrutural baseia-se nas posições relativas de seus elementos.
23/09/2013 Programação de Computadores II 6
Definição
Supondo n > 0, temos:
x1 é o primeiro elemento
para 0 < k < n: xk é precedido por xk−1 e seguido por xk+1
Xn é o último elemento.
![Page 7: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/7.jpg)
Listas Lineares
Para manipular listas lineares, precisamos disponibilizar operações de:
Busca, Inclusão, Remoção.
23/09/2013 Programação de Computadores II 7
Operações
![Page 8: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/8.jpg)
Listas Lineares
Para manipular listas lineares, precisamos disponibilizar operações de:
Busca, Inclusão, Remoção.
23/09/2013 Programação de Computadores II 8
Operações
Casos particulares …
1. Insersão e remoção em um único extremo: Pilha.
2. Insersão e remoção em extremos distintos: Fila.
![Page 9: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/9.jpg)
Listas Lineares
Ao desenvolver uma implementação para listas lineares devemos levar em conta como podemos armazena-lá no computador.
Opções:
Sequencial ou Encadeada
Aula de hoje: Implementação Sequencial.
23/09/2013 Programação de Computadores II 9
Alocação
![Page 10: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/10.jpg)
Listas Lineares
A forma mais natural de armazenar uma lista linear consiste em armazenar seus elementos em células de memória consecutivas.
23/09/2013 Programação de Computadores II 10
Alocação Sequencial
Suponha que cada célula tem endereço ε e ocupa k bytes:
![Page 11: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/11.jpg)
Listas Lineares
Os elementos da lista podem ser formado por “campos”:
Uma chave k[i] está associada ao nó L[i].
A lista é dita classificada ou ordenada por chave quando:
se i < j então k[i] precede k[j]
23/09/2013 Programação de Computadores II 11
Ordenadas
![Page 12: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/12.jpg)
Listas Lineares
Implemente em Java uma lista linear utilizando Arrays.
23/09/2013 Programação de Computadores II 12
Exercício
![Page 13: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/13.jpg)
Listas Lineares
Casa:
Implemente em Java uma lista linear ordenada utilizando Arrays.
23/09/2013 Programação de Computadores II 13
Exercício
![Page 14: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/14.jpg)
Listas Lineares
Para muitas aplicações é necessário impor restrições de acesso aos dados.
Tais restrições podem ser benéficas por:
• aliviar a necessidade de usar estruturas com mais detalhes.
• permitir implementações mais simples e flexíveis.
23/09/2013 Programação de Computadores II 14
Estruturas de Acesso Restrito
![Page 15: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/15.jpg)
Listas Lineares
Apenas duas operácões básicas:
PUSH ou Empilha: Acrescentar no topo da pilha
POP ou Desempilha: Retirar do topo da pilha
23/09/2013 Programação de Computadores II 15
Pilhas
![Page 16: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/16.jpg)
Listas Lineares
Como o último elemento que entrou na pilha será o primeiro a sair da pilha. A pilha é conhecida como uma estrutura do tipo:
LIFO (“Last In First Out”).
23/09/2013 Programação de Computadores II 16
Pilhas
![Page 17: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/17.jpg)
Listas Lineares
Implemente em Java uma pilha utilizando Arrays.
23/09/2013 Programação de Computadores II 17
Exercício
![Page 18: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/18.jpg)
Listas Lineares
Apenas duas operácões básicas:
Queue ou Enfila: v é inserido no final da fila.
Dequeue ou Desenfila: descarta o elemento mais antigo da fila, ou seja, aquele que está no início da fila.
23/09/2013 Programação de Computadores II 18
Filas
Queue Queue
Queue Queue Dequeue Dequeue Dequeue Dequeue
![Page 19: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/19.jpg)
Listas Lineares
Como o primeiro elemento que entrou na fila será o primeiro a sair da fila. A fila é conhecida como uma estrutura do tipo:
FIFO (“First In First Out”).
23/09/2013 Programação de Computadores II 19
Filas
Queue Queue
Queue Queue Dequeue Dequeue Dequeue Dequeue
![Page 20: Programação de Computadores II - ic.uff.brrosseti/PROGII/2013-2/aula_05_Listas_Lineares.pdf · Estrutura de Dados Uma estrutura de dados bem projetada permite a manipulação eficiente,](https://reader034.vdocuments.site/reader034/viewer/2022050715/5e075e2cb7fa513866508ce6/html5/thumbnails/20.jpg)
Listas Lineares
Implemente em Java uma fila utilizando Arrays.
23/09/2013 Programação de Computadores II 20
Exercício