AULA 04. Ocupação Circular Listas com Descritor

Documentos relacionados
AULA 04 Ocupação Circular Listas com Descritor

Listas lineares. Listas lineares. Estrutura dos nodos. Lista linear. a b c d. Uma Lista Linear (LL) é uma seqüência de nodos

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Ponteiro e lista dinâmica

Pilhas Acesso. Pilha. Fila. Listas lineares especiais. Pilhas e Filas. Listas lineares especiais mais usuais. Disciplina restrita

Pilhas e Filas Acesso

Instituto Luterano de Ensino Superior de Ji-Paraná Curso Bacharelado em Informática Estrutura de Dados I Prof.: José Luiz A.

Exemplos. Alocação Dinâmica de Pilhas. Pilhas. Pilhas. Implementação Seqüencial X Encadeada. SCE 182 Algoritmos e Estruturas de Dados I

Matrizes Esparsas. atribuição (M, i, j, v) (i, j) IND. v nulo. v não nulo v nulo v não nulo. há espaço. não há espaço. retira substitui nada

Lista Ligada Linear - Retirar elemento

Estrutura de Dados Pilha (Stack)

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)

Estruturas de Dados I Listas Estáticas

Ponteiros em Pascal. Variáveis ponteiros são aquelas que. Declaração em Pascal: var ptint: ^integer; {ponteiro para uma variável inteira } real} 1

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Estrutura de Dados Polinómio

Análise e Desenvolvimento de Algoritmos (2006/2007)

AULA 3. Conceitos de Abstração de Dados

Árvores. Árvores. INF01203 Estruturas de Dados. Árvores. Exemplos de Aplicações. Hierarquia de subordinação. Relacionamento Lógico.

Análise Semântica e Tratamento de Erros Dependentes de Contexto

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

8. ÁRVORES ÁRVORES Niv 1 Niv 2 Niv 3 Niv 4. Até Introdução

Filas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

SCC Algoritmos e Estruturas de Dados I

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Disciplina que estuda as técnicas computacionais para a organização e manipulação eficiente de quaisquer quantidades de informação.

Listas Lineares Duplamente Encadeada (LLDE)

Árvores & Árvores Binárias

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Sumário. 1.1 Variáveis Globais e Locais Passagem de Parâmetro (por valor por referência) 1

Estrutura de Dados (DPADF 0056)

Filas Implementação Sequencial

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site (autor: desconhecido).

Hashing. ACH Introdução à Ciência da Computação II. Delano M. Beder

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Estruturas de Dados Estruturas de Dados Fundamentais

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

Algoritmos e Estruturas de dados

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas. SCC-502 Algoritmos e Estruturas de Dados I

Pilhas e Filas. Nádia Félix e Hebert Coelho

CAP. VI ANÁLISE SEMÂNTICA

Modularização. Prof. Antonio Almeida de Barros Junior

Refinamentos sucessivos

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 9

Estruturas de Dados Básicas

Conceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias

Professora Jeane Melo

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: ID: 25/04/2005. PARTE I Questões Objetivas

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;

Árvores. N-árias, Binárias, Busca. Vanessa Maia Berny Mestrado em Ciência da Computação

Tipos Abstratos de Dados. Estrutura de Dados

Teoria dos Grafos Aula 3

Estruturas de Dados Filas

LISTAS LINEARES. Estrutura de Dados

Lista de Exercícios 04

Tipos de Dados Dinâmicos

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)

Fila. 26 e 31/8/2008 Representação/Implementação: Seqüencial estática Encadeada dinâmica Exercícios/Aplicações

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações

Árvores Binárias de Pesquisa (ABP) INF01203 Estruturas de Dados. Operações. Árvores Binárias de Pesquisa (ABP) Caminhamento Central à Esquerda

Linguagem Algorítmica OO. Linguagem Algorítmica

SCC 202 Prova 1. 28/9/2010 Resolução e Comentários

Árvores Binárias de Busca (ABB) 18/11

Aula 06 Introdução à Programação Matrizes

BCC202 - Estrutura de Dados I

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Estruturas de Dados I

Programação II. Aula 1

Lista de Comandos: Arquivo texto e Binário

Árvores. Prof. César Melo DCC/ICE/UFAM

Prof. Walteno Martins Parreira Júnior

1. Listas sequenciais versus listas ligadas. Lista sequencial

Aula 7 Encadeamento de Memória

TAD: Tipo Abstrato de Dados (parte 1)

Árvores. Prof. César Melo DCC/ICE/UFAM

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Listas Lineares. continuando...

SCC122 - Estruturas de Dados. Lista Estática Seqüencial

Listas e matrizes esparsas Orthogonal List Representation (Listas Cruzadas) 21/10/2010

Linguagem de programação: Pascal

ESTRUTURA DE DADOS -ARQUIVOS. Prof. Angelo Augusto Frozza, M.Sc.

Algoritmos e Estrutura de Dados. Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Aula 05: Listas Encadeadas. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Tabelas de dispersão/hash

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Complexidade de Algoritmos

Estruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

Estruturas de Dados. Filas em que a prioridade de remoção não é cronológica. Maior prioridade não é do elemento que ingressou primeiro

Transcrição:

AULA 04 Ocupação Circular Listas com Descritor

Ocupação Circular

Ocupação circular Final da LL Início da LL X 1 2 3 4 5 6 7 8 9 10 11 12 13

Ocupação circular utilizando parte do arranjo Final da LL Início da LL

Ocupação Circular duas listas sobre o mesmo arranjo IA IL N FL FA 10 11 4 14 17 IA IL N FL FA 18 20 56 24 18 24 9 10 24 25 26 27 Espaço para L1 Espaço para L2

Lista linear TAD Genérico 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-ésimonodo 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)

Listas com Descritor

Listas Lineares com Descritor Descritor contém diversas informações sobre a lista linear : localização acesso estrutura conteúdo 7 9 3 8 2 5 1 6 7 4... 1 2 3 4 5 6 7 8 9 10 11 12 13 4

Exemplo de descritor í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 DLista 3 8 6 7 4 Descritor de LL X 7 9 2 5 1 4 1 2 3 4 5 6 7 8 9 10 11 12 13

Lista vazia com descritor Primeiro nodo da lista Último nodo da lista Comprimento da lista DescrLL 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 X 1 2 3 4 5 6 7 8 9 10 11 12

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.

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.

Vantagens da utilização de 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

Descritor informando espaço disponível para a lista no arranjo Índice de início da lista Índice de final da lista Índice de início do espaço disponível no arranjo DLista Nr. Nodos da lista IA IL N FL FA 1 3 6 8 13 Índice de final do espaço disponível no arranjo ÍNDICES!!! X 1 2 3 4 5 6 7 8 9 10 11 12 13

Descritor informando espaço disponível para a lista no arranjo IA IL N FL FA DLista 12 13 6 18 22 X

Duas LL implementadas sobre o mesmo arranjo, com descritores IA IL N FL FA 10 11 4 14 17 IA IL N FL FA 18 20 5 24 24 9 10 24 25 26 27 Espaço para L1 Espaço para L2

Declarações para os algoritmos apresentados TipoDescr registro IA : inteiro; IL : inteiro; N : inteiro; FL : inteiro; FA : inteiro; fim; A : arranjo [11.. 23] de TipoNodo Algoritmos implementando a alocação circular - mais complexos mas mais eficientes IA IL N FL FA 11 13 6 18 23 A

Lista vazia com descritor IA IL N FL FA DescrL 1 0 0 0 13 L 1 2 3 4 5 6 7 8 9 10 11 12 13 DescrL IA IL N FL FA 11 0 0 0 23 OU DescrL IA IL N FL 11 10 0 10 FA 23 L

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;

Inserir novo nodo LL com descritor - contigüidade física IA IL N FL FA 11 13 6 18 23 No início A No final A No meio A

Inserir novo nodo no início LL com descritor - contigüidade física IA IL N FL FA 11 12 13 76 18 23 A IA IL N FL FA 11 11 67 19 18 23? A A

Inserir novo nodo no final LL com descritor - contigüidade física IA IL N FL FA 11 13 67 19 18 23 A IA IL N FL FA 11 16 15 89 23 18 23? A A

Inserir novo nodo no meio LL com descritor - contigüidade física IA IL N FL FA 11 13 67 18 19 23 Pos = 3 A A FL = FA - abrir espaço para a frente, alterando IL

Lista linear TAD Genérico 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-ésimonodo 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; Descritor = record iniarranjo : integer; fimarranjo : integer; inilista : integer; fimlista : integer; num : integer; end

Lista linear TAD Genérico 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)