• Nenhum resultado encontrado

AULA 04 Ocupação Circular Listas com Descritor

N/A
N/A
Protected

Academic year: 2021

Share "AULA 04 Ocupação Circular Listas com Descritor"

Copied!
8
0
0

Texto

(1)

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

AULA 04

Ocupação Circular

Listas com Descritor

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Ocupação Circular

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Ocupação circular

6

7

8

9 10

3

4

5

1

2

11 12 13

Início

da LL

Final

da LL

X

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

16 17 18 19 20

13 14 15

11 12

21 22 23

Ocupação circular utilizando parte do

arranjo

Início

da LL

Final

(2)

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Ocupação Circular

duas listas sobre o mesmo arranjo

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

10 11 4 14 17

IA IL N

FL

FA

Espaço para L1

Espaço para L2

18 20 5 24 24

IA IL N

FL

FA

18 20 6 18 24

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

• Dados

– ????

• Operações

– ?????

Lista linear – TAD Genérico

• Dados

– Tipo de dados para armazenar os elementos da lista

– Componentes para controle da estrutura lista

• Operações

– inicializa(): Cria lista

– insere(): Insere um nodo na k-ésima posição da lista

– remove(): Remove o k-ésimo nodo da lista

– consulta(): Consulta o k-ésimo nodo da lista

– altera(): Substitui o nodo na k-ésima posição da lista

por outro

– Destroi(): destrói a lista

Lista linear – TAD Genérico

Dados

– type Lista = array [1..n] of Info;

– início e final da lista

– tamanho do arranjo

Operações

– procedure inicializa (var ini, fim : integer);

// inicializa com zeros o início e o fim da lista

– function insere (var x: Lista; k: integer ; val: Info; var ini, fim: integer):

boolean;

// insere um nodo em uma lista, na posição K

– function removeK(var x: Lista; k: integer; var ini, fim: integer): boolean;

// remove um nodo da posição K

– function removeVal(var x: Lista; val: info; var ini, fim: integer): boolean;

// remove um nodo cujo valor é val

– function altera (x: Lista; k, ini, fim: integer; var val: Info): boolean;

// altera o nodo da posição K

– function consulta (x: Lista; ini, fim: integer; val:Info): integer;

// devolve a posição (o índice no arranjo) do nodo para o qual o campo valor é igual

ao valor buscado (val)

(3)

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Listas com Descritor

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Listas Lineares com Descritor

Descritor

contém diversas informações

sobre a lista linear :

localização

acesso

estrutura

conteúdo

...

1

2

3

4

5

6

7

8

9 10

11 12 13

4

2

5

1

7

9

6

7

4

3

8

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

índice do início da lista

índice do final da lista

comprimento da lista

índice do menor valor contido na lista

índice do maior valor contido na lista

Exemplo de descritor

6

7

8

9 10

3

4

5

1

2

11 12 13

X

Descritor de LL

DLista

4

2

5

1

7

9

6

7

4

3

8

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Lista vazia com descritor

6

7

8

9

10

3

4

5

1

2

11 12

X

DescrLL

0

0

0

Comprimento da lista

Último nodo da lista

Primeiro nodo da lista

6

7

8

9

10

3

4

5

(4)

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Acesso à LL com Descritor em

forma de arranjo

TipoNodo = registro

cod: inteiro;

nome: string;

valor: real;

Fim;

X [DLista[2]].Nome  Nome contido no primeiro nodo da lista

X [DLista[3]].Valor  Valor contido no último nodo da lista

DLista[4]  comprimento da lista. A informação está contida

diretamente no descritor, não sendo necessário percorrer a

lista para obtê-la.

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Acesso à LL com Descritor em

forma de registro

TipoDescritor = registro

IndIni: inteiro;

IndFim: inteiro;

MaiorValor: real;

Fim;

X [DL.IndIni].Nome  Nome contido no primeiro nó da lista

X [DL.IndFim].Valor  Valor contido no último nó da lista

DL.MaiorValor  Maior valor contido no campo valor de

todos os nós da lista. Neste caso não é necessário acessar

o arranjo, pois a informação já está contida no descritor.

facilidade de referência à lista

Proc Constroi_ll (var DLista: TipoDescritor)

em vez de

Proc Constroi_ll (var Ini,Fim: TipoLista; var N: inteiro, … )

afastamento do usuário dos detalhes da

representação interna

Vantagens da utilização de

descritor

IA IL N

FL

FA

Descritor informando espaço disponível

para a lista no arranjo

6

7

8

9 10

3

4

5

1

2

11 12 13

Nr. Nodos

da lista

6

Índice de início do espaço

disponível no arranjo

Índice de final do

espaço disponível

no arranjo

1

3

8

13

Índice de início da lista

Índice de final da lista

ÍNDICES !!!

X

(5)

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Descritor informando espaço disponível

para a lista no arranjo

16 17 18 19 20

13 14 15

11 12

21 22 23

IA IL N

FL

FA

22

12 13

6

18

X

DLista

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Duas LL implementadas sobre o

mesmo arranjo, com descritores

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

10 11 4 14 17

IA IL N

FL

FA

Espaço para L1

Espaço para L2

18 20 5 24 24

IA IL N

FL

FA

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

16

17

18

19

20

13

14

15

11

12

21

22

23

IA

IL

N

FL

FA

23

11

13

6

18

TipoDescr

registro

IA : inteiro;

IL : inteiro;

N : inteiro;

FL : inteiro;

FA : inteiro;

fim;

A : arranjo [11 .. 23] de TipoNodo

A

Declarações para os algoritmos

apresentados

Algoritmos implementando a alocação circular - mais complexos

mas mais eficientes

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Lista vazia com descritor

6 7 8 9 10

3 4 5

1 2

11 12 13

IA IL

N

FL

FA

13

1

0

0

0

IA IL N

FL

FA

23

11 0

0

0

OU

IA IL N

FL

FA

23

11 10

0

10

16 17 18 19 20

13 14 15

11 12

21 22 23

DescrL

L

DescrL

DescrL

L

(6)

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Inicialização do descritor para lista

vazia com descritor

Proc

InicializarDescritor

(var DescrL: TipoDescritor;

IniArea, FimArea: inteiro);

início

IL := 0;

FL := 0;

N := 0;

IA := IniArea;

FA := FimArea;

fim InicializarDescritor;

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

IA

IL

N

FL

FA

23

11

13

6

18

Inserir novo nodo

LL com descritor - contigüidade física

16

17

18

19

20

13

14

15

11

12

21

22

23

A

No início

16

17

18

19

20

13

14

15

11

12

21

22

23

A

No final

16

17

18

19

20

13

14

15

11

12

21

22

23

A

No meio

Inserir novo nodo no início

LL com descritor - contigüidade física

IA

IL

N

FL

FA

23

11

13

6

18

16

17

18

19

20

13

14

15

11

12

21

22

23

A

16

17

18

19

20

13

14

15

11

12

21

22

23

A

?

IA

IL

N

FL

FA

23

11

11

6

18

16

17

18

19

20

13

14

15

11

12

21

22

23

A

19

7

7

12

Inserir novo nodo no final

LL com descritor - contigüidade física

IA

IL

N

FL

FA

23

11

13

6

18

16

17

18

19

20

13

14

15

11

12

21

22

23

A

7

19

A

16

17

18

19

20

13

14

15

11

12

21

22

23

?

IA

IL

N

FL

FA

23

11

16

15

8

18

23

16

17

18

19

20

13

14

15

11

12

21

22

23

A

9

(7)

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Inserir novo nodo no meio

LL com descritor - contigüidade física

IA

IL

N

FL

FA

23

11

13

6

18

16

17

18

19

20

13

14

15

11

12

21

22

23

A

Pos = 3

16

17

18

19

20

13

14

15

11

12

21

22

23

A

19

7

FL = FA - abrir espaço para a frente, alterando IL

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

• Dados

– ????

• Operações

– ?????

Lista linear – TAD Genérico

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

• Dados

– Tipo de dados para armazenar os elementos da lista

– Componentes para controle da estrutura lista

• Operações

– inicializa(): Cria lista

– insere(): Insere um nodo na k-ésima posição da lista

– remove(): Remove o k-ésimo nodo da lista

– consulta(): Consulta o k-ésimo nodo da lista

– altera(): Substitui o nodo na k-ésima posição da lista

por outro

– Destroi(): destrói a lista

Lista linear – TAD Genérico

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Dados

type Lista = array [1..n] of Info;

Descritor = record

iniArranjo : integer;

fimArranjo : integer;

iniLista : integer;

fimLista : integer;

num : integer;

end

(8)

Clesio S. Santos - Nina Edelweiss - Renata de M. Galante Estruturas de Dados - Listas Lineares

Operações

– procedure inicializa(var d: Descritor; ini, fim: integer);

// inicializa a lista. ini e fim representam a área a ser ocupada pela lista

– function insere(var d: Descritor; val: Info; k: integer; var x: Lista): boolean;

// insere um nodo em uma lista, na posição K

– function removeK(var d: Descritor; k: integer; var x: Lista): boolean;

// remove um nodo da posição K

– function removeVal(var d: Descritor; val: info; var x: Lista): boolean;

// remove um nodo cujo valor é val

– function altera (d: Descritor; x: Lista; k: integer; var val: Info): boolean;

// altera o nodo da posição K

– function consulta (d: Descritor; x: Lista; val: Info): inteiro;

// devolve a posição (o índice no arranjo) do nodo para o qual o campo valor é igual

ao valor buscado (val)

Referências

Documentos relacionados

Quanto aos deveres dos alunos, em qualquer regime, presencial, misto ou a distância, é aplicável o disposto no Estatuto do Aluno e Ética Escolar, aprovado

Deste modo, estaria banalizado o próprio mérito recursal, ao estimular a propositura de recursos infundados, cuja chances de sucessão seriam baixíssimas, tendo em vista que “o

Entre outros exemplos temos, o comportamento das mar´es, as contrac¸c˜ oes da musculatura do cora¸c˜ ao, o ciclo respirat´ orio (inspira¸c˜ ao e expira¸c˜ ao), o movimento

Os tópicos a seguir discorrerão acerca: da Reforma da Administração Pública, que traz em seu bojo a busca pela eficiência orientada para o cidadão no atendimento das

IV - decidir sobre a aplicação de uma ou mais das medidas prudenciais preventivas previstas na legislação vigente, a multa cominatória a elas relacionadas e sua eventual

5 de 13 Deliberação: A Câmara Municipal de Sines tomou conhecimento do despacho do Presidente e aprova por unanimidade a nomeação do Vereador Tiago Santos, (ausente da

Gerir uma vila alentejana no século XV: as finanças municipais de Elvas em 1432-1433 FRAGMENTA

São também as histórias e as relações estabelecidas pelo indivíduo com os outros e com o meio em que atua que funcionam como suporte para conteúdos entrelaçados como Sistema