• 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!
29
0
0

Texto

(1)

AULA 04

Ocupação Circular

Listas com Descritor

(2)
(3)

Ocupação circular

6

7

8

9 10

3

4

5

1

2

11 12 13

Início

da LL

Final

da LL

X

(4)

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

(5)

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

(6)

• Dados

– ????

• Operações

– ?????

(7)

• 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

(8)

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)

(9)
(10)

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

(11)

í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

(12)

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

(13)

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.

(14)

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.

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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;

(22)

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

(23)

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

19

7

7

12

(24)

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

23

18

16

17

18

19

20

13

14

15

11

12

21

22

23

A

9

(25)

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

(26)

• Dados

– ????

• Operações

– ?????

(27)

• 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

(28)

Dados

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

Descritor = record

iniArranjo : integer;

fimArranjo : integer;

iniLista : integer;

fimLista : integer;

num : integer;

end

(29)

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

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

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

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

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

Sobre a concepção do texto Costa Val (1997), afirma que “produzir um texto, requer, antes do trabalho braçal de encher folhas de papel, a construção de

A ABEP, no final de 2002, criou o Conselho de Ética e Arbitragem que tem como objetivo emitir pareceres acerca de aspectos éticos envolvidos nas práticas da

Nesta seção, será feita a apresentação e análise dos resultados da presente pesquisa, iniciando pela metodologia para a empresa fazer parte do ranking da Fundação

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