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

Estrutura de Dados Pilha (Stack)

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

Estrutura de Dados Polinómio

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

Lista Ligada Linear - Retirar elemento

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

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

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)

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

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

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

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

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

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

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

Estruturas de Dados Estruturas de Dados Fundamentais

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

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Estruturas de Dados I Listas Estáticas

Algoritmos e Estruturas de dados

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

CAP. VI ANÁLISE SEMÂNTICA

Refinamentos sucessivos

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

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

Professora Jeane Melo

Árvores & Árvores Binárias

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

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

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

AULA 3. Conceitos de Abstração de Dados

Lista de Exercícios 04

SCC Algoritmos e Estruturas de Dados I

Tipos de Dados Dinâmicos

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

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

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

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

Lista de Comandos: Arquivo texto e Binário

Filas Implementação Sequencial

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

Estruturas de Dados Básicas

1. Listas sequenciais versus listas ligadas. Lista sequencial

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

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

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

Estruturas de Dados Filas

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

Listas Lineares. continuando...

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

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

Lista de Exercícios sobre Listas Implementadas por Encadeamento

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

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

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

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

Complexidade de Algoritmos

Teoria dos Grafos Aula 3

Prof. Walteno Martins Parreira Júnior

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

Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo

Introdução à Ciência da Computação

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

Estruturas de Dados I

Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo;

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

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Árvores binárias de busca

Linguagem Algorítmica OO. Linguagem Algorítmica

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 4 Strings. Prof. Sandra Pais Soares

Programação II. Aula 1

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

Estrutura de Dados Listas

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

LISTAS LINEARES. Estrutura de Dados

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

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

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e recodificações em C dos originais:

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

1: unit ArvAVL; 2: { Unit que implementa uma arvore AVL } 3: interface 4: 5: type 6: Tipo_da_Chave = longint; 7: Tipo_do_Dado = record 8: Chave :

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

Gerenciamento de Memória

Linguagem de programação: Pascal

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

5 Arrays. 5.1 Criando um array. 5.2 Inicializando arrays. c:\>java Array Janeiro tem 31 dias.

Estruturas de dados complexas: cell arrays e structures

Computação Eletrônica. Arquivo

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

Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS Série : 3 º Período - 1 º Semestre de 2011 Professora : Elzi Ap. Gil

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

Transcrição:

UL 04 Ocupação Circular Listas com Descritor Ocupação Circular Ocupação circular Ocupação circular utilizando parte do arranjo Final da LL Início da LL Final da LL Início da LL 1 2 3 4 5 6 7 8 9 10 11 12 13

Ocupação Circular duas listas sobre o mesmo arranjo 10 11 4 14 17 18 20 56 24 18 24????????? 9 10 24 25 26 27 Espaço para L1 Espaço para L2 Tipo de dados para armazenar os elementos da lista Componentes para controle da estrutura lista 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 type Lista = array [1..n] of Info; início e final da lista tamanho do arranjo 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 Lineares com Descritor Listas com Descritor Descritor contém diversas informações sobre a lista linear : localização acesso estrutura conteúdo 3 8 6 7 4 7 9 2 5 1 4... 3 4 5 6 7 8 9 10 1 2 11 12 13 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 Lista vazia com descritor Primeiro nodo da lista DescrLL 0 0 0 Último nodo da lista Comprimento da lista DLista 3 8 6 7 4 Descritor de LL 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 7 9 2 5 1 4 1 2 3 4 5 6 7 8 9 10 11 12 13

cesso à LL com Descritor em forma de arranjo TipoNodo = registro cod: inteiro; nome: string; valor: real; Fim; cesso à LL com Descritor em forma de registro TipoDescritor = registro IndIni: inteiro; IndFim: inteiro; MaiorValor: real; Fim; [DLista[2]].Nome Nome contido no primeiro nodo da lista [DLista[3]].Valor Valor contido no último nodo da lista DLista[4] comprimento da lista. informação está contida diretamente no descritor, não sendo necessário percorrer a lista para obtê-la. [DL.IndIni].Nome Nome contido no primeiro nó da lista [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 Descritor informando espaço disponível para a lista no arranjo Índice de início da lista Índice de final da lista facilidade de referência à lista Proc Constroi_ll (var DLista: TipoDescritor) em vez de Índice de início do espaço disponível no arranjo Nr. Nodos da lista Índice de final do espaço disponível no arranjo Proc Constroi_ll (var Ini,Fim: TipoLista; var N: inteiro, ) DLista 1 3 6 8 13 afastamento do usuário dos detalhes da representação interna ÍNDICES!!! 1 2 3 4 5 6 7 8 9 10 11 12 13

Descritor informando espaço disponível para a lista no arranjo Duas LL implementadas sobre o mesmo arranjo, com descritores I IL N FL F 10 11 4 14 17 18 20 5 24 24 DLista 12 13 6 18 22 9 10 24 25 26 27 Espaço para L1 Espaço para L2 Declarações para os algoritmos apresentados TipoDescr registro I : inteiro; IL : inteiro; N : inteiro; FL : inteiro; F : inteiro; fim; : arranjo [11.. 23] de TipoNodo lgoritmos implementando a alocação circular - mais complexos mas mais eficientes 11 13 6 18 23 Lista vazia com descritor L 1 2 3 4 5 6 7 8 9 10 11 12 13 1 0 0 0 I IL N FLF DescrL 11 0 0 0 23 OU L DescrL 13 DescrL I IL N 11 10 0 10 FLF 23

Inicialização do descritor para lista vazia com descritor Inserir novo nodo LL com descritor - contigüidade física Proc InicializarDescritor (var DescrL: TipoDescritor; Inirea, Fimrea: inteiro); início IL := 0; FL := 0; N := 0; I := Inirea; F := Fimrea; fim InicializarDescritor; No início No final 11 13 6 18 23 No meio Inserir novo nodo no início LL com descritor - contigüidade física 11 12 13 76 18 23 Inserir novo nodo no final LL com descritor - contigüidade física 11 13 67 19 18 23 11 11 67 19 18 23 11 16 15 89 23 18 23??

Inserir novo nodo no meio LL com descritor - contigüidade física 11 13 67 18 19 23 Pos = 3????????? FL = F - abrir espaço para a frente, alterando IL Tipo de dados para armazenar os elementos da lista Componentes para controle da estrutura lista 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 type Lista = array [1..n] of Info; Descritor = record inirranjo : integer; fimrranjo : integer; inilista : integer; fimlista : integer; num : integer; end

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)