3.4 Representação física: alocação encadeada (dinâmica) Ptlista - variável ponteiro externa que indica o início da lista.



Documentos relacionados
Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller

Algoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira

Tópicos Avançados em Estrutura de Dados 6º Período Ciência da Computação Prof. Jean Carlos Hennrichs. Revisão. 2. Lista Estática Duplamente Encadeada

PROGRAMAÇÃO II 3. FILA DINÂMICA

Prof. Marcelo Nogueira

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila

Listas Duplamente Encadeadas

Trabalho 3: Agenda de Tarefas

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

Complexidade de Algoritmos

Lista restrita onde as operações de inserção e retirada são feitas nas extremidades. Deque (fila de final duplo).

Estruturas de Dados Aula 15: Árvores 17/05/2011

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Algoritmos e Estrutura de Dados. Aula 05 Estrutura de Dados: Listas Prof. Tiago A. E. Ferreira

Filas: conceitos e implementações

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

DAS5102 Fundamentos da Estrutura da Informação

Métodos Computacionais. Fila

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Estruturas de Dados Pilhas, Filas e Deques

Memória - Gerenciamento. Sistemas Operacionais - Professor Machado

Estrutura de Dados Básica

COS767 - Modelagem e Análise Aula 2 - Simulação. Algoritmo para simular uma fila Medidas de interesse

Nível da Arquitetura do Conjunto das Instruções

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

Sistemas Operacionais

Capítulo 4 Gerenciamento de Memória

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/

Busca em Memória. Secundária

TRABALHO PRÁTICO Nro. 02 (Atualizado em 29/10/2008)

Hashing (Tabela de Dispersão)

EAD Árvore árvore binária

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Gerenciamento de memória

Tipos de Dado Abstrato: Listas, Filas e Pilhas

FACULDADE DE TECNOLOGIA SENAC GOIÁS ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA DA SILVA

INF 1010 Estruturas de Dados Avançadas

Capítulo 4 Gerenciamento de Memória

Guia do Usuário. idocs Content Server v

PROGRAMAÇÃO II 3. PILHA DINÂMICA

3.1 Definições Uma classe é a descrição de um tipo de objeto.

IMPLEMENTAÇÃO DE UM PROTÓTIPO PARA INFORMATIZAÇÃO DE PROCESSO DE ADEQUAÇÃO DE FÉRIAS

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

ESTRUTURA DE DADOS DCC013

Sistema de Memórias de Computadores

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Gerenciamento Básico B de Memória Aula 07

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum

Árvores Binárias de Busca

Ata da resolução de exercício

Manual Operacional Agenda Regulada. Unidades Solicitantes

Prof. Bruno Calegaro

Linguagens de Programação

Classificação e Pesquisa de Dados

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Análises Geração RI (representação intermediária) Código Intermediário

Noções Várias em Visual Basic

Gerência do Sistema de Arquivos. Adão de Melo Neto

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento

Pilhas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Projeto e Desenvolvimento de Algoritmos

Sistemas Operacionais Arquivos

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Sistema de arquivos. Prof. Valeria M. Bastos Prof. Antonio Carlos Gay Thomé 13/06/2012 1

Filas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Guia de Utilização BANCO DE EMPREGOS ANOS.

A estrutura de repetição em um algoritmo consiste na execução de um trecho do mesmo levando em consideração certas condições imposta pelo algoritmo.

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Na resolução de um problema por meio de um programa, a primeira providência é conceber um algoritmo adequado.

Neste tópico, veremos como selecionar e copiar informações entre bancos de dados de empresa no SAP Business One.

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

FILAS DE PRIORIDADE e HEAPS

Árvores B* Letícia Rodrigues Bueno

Guia de Consulta Rápida C++ STL. Joel Saade. Novatec Editora

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

So,fit 4 Transport Release Notes Versão 1.7

Processos. Estruturas de Controle

Manual de candidatura por via electrónica

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

DESENVOLVIMENTO DE SOFTWARE

Pesquisa em Memória Primária. Prof. Jonas Potros

Sistemas Operacionais I

Sistemas Operacionais

3 Estratégia para o enriquecimento de informações

Trabalho Prático 1 Revisão de Programação, Tipos Abstratos de Dados e Combinação de Alocação Estática e Dinâmica de Memória

Universidade Federal do Espírito Santo

Arquitetura de Sistemas Operacionais

1 Introdução. 2 Funcionamento da Aplicação. Projeto de Programação - Entrega Final MEEC / Semestre Farm:TamagoISTi

Introdução à Programação. João Manuel R. S. Tavares

DAS5102 Fundamentos da Estrutura da Informação

Figura 13.1: Um exemplo de árvore de diretório.

Manipulação de Arquivos em Pascal

WEBGIS Sistema Informativo Territorial

Transcrição:

3.4 Representação física: alocação encadeada (dinâmica) As posições de memória são alocadas (ou desalocadas) na medida em que são necessárias (ou dispensadas). Os nós de uma lista encontram-se aleatoriamente dispostos na memória e são interligados por ponteiros, que indicam a posição de memória (endereço) do próximo elemento. O último nó contém em seu link o endereço nulo (λ), indicando que não há nós sucessores. Ptlista Nó 1 Nó 2 Nó 3 Nó 4 λ Ptlista - variável ponteiro externa que indica o início da lista. Formato de um nó: Informação link Link endereço do próximo nó. 3.4.1 LED: Lista de Espaço Disponível heap - área de memória onde, dinamicamente, serão criadas as estruturas de trabalho. LED - Lista especial que contém as posições de memória ainda não utilizadas ou dispensadas após utilização. LED e estruturas compartilham a memória disponível. Gerenciamento da LED: reserva e posterior liberação de memória. Duas formas: pelo usuário, através de dimensionamento de vetor(es) simulando a memória total disponível. O endereço do nó corresponde ao índice de uma posição do vetor.

LED (inicio) vago (topo da estrutura) informação próx 2 3 4 pt índice do nó disponível λ Busca de um elemento na LED Procedimento se vago < > λ então pt vago vago LED[vago].prox senão overflow Devolução de um nó à LED Procedimento des LED[pt].prox vago vago pt pelas linguagens de programação, através dos módulos de gerência de memória disponível ao usuário. Em Pascal, as rotinas new(pt) e dispose(pt) executam essas tarefas. Notação utilizada nos algoritmos: ponteiro. campo 3.4.2 Lista simplesmente encadeada 3.4.2.1 Listas lineares em geral

Estrutura de armazenamento: criação de um nó especial (nó cabeça) sem informações relacionadas à tabela propriamente dita, nunca removido, que passa a ser o nó indicado pelo ponteiro de início de lista. Lista vazia: (nó cabeça) Lista não vazia: Nó 1 Nó 2 Nó n λ Formato de um nó: Informação info link prox 3.4.2.1.1 Percurso (impressão da lista apontada por ) // ponteiro para o primeiro nó // pont - ponteiro de percurso pont enquanto pont <> λ faça imprimir(pont. info) pont pont. prox 3.4.2.1.2 Busca em uma lista ordenada pont retorna apontando para o elemento procurado. Caso não seja encontrado pont aponta para λ. ant - retorna apontando para o elemento anterior ao procurado. Caso não seja encontrado, ant indica o elemento anterior ao último pesquisado. ptr ponteiro de percurso. x chave procurada. Procedimento busca_enc(x, ant, pont) ant ; pont λ; ptr. prox enquanto ptr <> λ faça se ptr. chave < x então ant ptr // atualiza ant e ptr

ptr ptr. prox senão se ptr. chave = x então pont ptr // chave encontrada ptr λ 3.4.2.1.3 Inserção de um nó (após o nó apontado por ant) Três fases: Comunicação com a LED Acesso ao campo de informação do nó Acerto da estrutura Ptlista ant λ pt busca_enc(x, ant, pont) se pont = λ então // elemento não existe pt. chave x; pt. prox ant. prox ant. prox pt // acertar estrutura senão Elemento já está na tabela 3.4.2.1.4 Remoção de um nó (apontado por pont na lista) Ptlista ant pont λ busca_enc(x, ant, pont)

se pont <> λ então // elemento existe ant. prox pont. prox // acertar estrutura valor_recuperado pont. info // utilizar nó desocupar(pont) // devolver nó senão Elemento não está na tabela 3.4.2.2 Pilha (sem nó cabeça) 3.4.2.2.1 Inserção na pilha pt. prox topo // acertar pilha topo pt 3.4.2.2.2 Remoção da pilha se topo <> λ então pt topo // acertar pilha topo topo. prox valor recuperado pt. info // utilizar nó des // devolver nó senão underflow 3.4.2.3 Fila Dois ponteiros: início aponta par o primeiro nó da lista fim - aponta para o último nó da lista Fila vazia: inicio = fim = λ 3.4.2.3.1 Inserção na fila pt. prox λ se fim < > λ então // acertar fila fim. prox pt

senão inicio pt fim pt 3.4.2.3.2 Remoção da fila se início < > λ então pt início // acertar fila início início. prox se início = λ então // fila ficou vazia fim λ valor recuperado pt. info // utilizar nó des // devolver nó senão underflow 3.4.3 Listas circulares simplesmente encadeadas (o último nó da lista aponta para o nó cabeça) Nó 1 Nó 2 Nó n 3.4.3.1 Busca numa circular encadeada ordenada Colocar a chave procurada no nó cabeça. O ponteiro pont tem o valor de se o elemento não é encontrado. Procedimento busca_cir(x, ant, pont) ant ;. chave x; pont. prox enquanto pont. chave < x faça ant pont; pont pont. prox se pont < > e pont. chave = x então Chave localizada senão Chave não localizada Exercício: Busca em listas circulares não ordenadas.

3.4.3.2 Inserção e Remoção (exercício) Para termos acesso ao nó anterior ao que estamos posicionados temos que usar um ponteiro rastreador (ant). E se quisermos ter acesso a todos os nós anteriores? 3.4.4 Listas duplamente encadeadas (dois links no nó: um aponta para o sucessor, outro para o antecessor) 3.4.4.1 Listas Lineares em geral Duas variáveis ponteiro externas: uma para indicar o nó mais à esquerda (PtrEsq) e outra para indicar o nó mais à direita (PtrDir). PtrEsq PtrDir λ Nó 1 Nó 2 Nó 3 Nó n λ Formato de um nó: ant info prox 3.4.4.2 Lista circular duplamente encadeada (com nó cabeça) Nó 1 Nó 2 Nó n 3.4.4.2.1 Busca em uma lista ordenada (a função retorna indicando o nó procurado ou, se este não for encontrado, o seu consecutivo) Função Busca_dup(x) ultimo. ant se x ultimo. chave então pont. prox enquanto pont. chave < x faça // ponteiro de percurso

pont pont. prox // percorre a lista Busca_dup pont senão Busca_dup 3.4.4.2.2 Inserção em lista circular duplamente encadeada pont pt pont Busca_dup(x) se pont = ou pont. chave < > x então anterior pont. ant // guarda endereço do anterior pt. chave x pt. ant anterior pt. prox pont anterior. prox pt // acertar lista pont. ant pt senão Elemento já se encontra na lista 3.4.4.2.3 Remoção de lista circular duplamente encadeada pont pont Busca_dup(x) se pont < > e pont. chave = x então anterior pont. ant // guarda endereço do anterior

posterior pont. prox anterior. prox posterior // acertar lista posterior. ant anterior valor_recuperado pont. info desocupar(pont) senão Elemento não se encontra na lista 3.4.4.3 Deque (Inserções e remoções restritas às extremidades) PtrEsq PtrDir λ Nó 1 Nó 2 Nó 3 Nó n λ Deque vazio: PtrEsq =PtrDir = λ 3.4.4.3.1 Inserção à esquerda pt. chave x pt. ant λ pt. prox PtrEsq se PtrEsq < > λ então PtrEsq. ant pt // acerta Deque senão // Deque estava vazio PtrDir pt // Inicializa PtrDir PtrEsq pt // Atualiza PtrEsq 3.4.4.3.2 Remoção à esquerda se PtrEsq < > λ então pont PtrEsq posterior PtrEsq. Prox se posterior < > λ então posterior. ant λ senão PtrDir = λ valor_recuperado pont. Info desocupar(pont) PtrEsq posterior senão Deque vazio // Deque não vazio // acertar lista // Deque ficou vazio // utilizar nó // devolver nó // Atualizar PtrEsq