programação de computadores ii - ic.uff.brrosseti/progii/2013-2/aula_05_listas_lineares.pdf ·...

20
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

Upload: others

Post on 07-Sep-2019

1 views

Category:

Documents


0 download

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

Listas Lineares

Implemente em Java uma fila utilizando Arrays.

23/09/2013 Programação de Computadores II 20

Exercício