Aula 7 Encadeamento de Memória

Documentos relacionados
Estrutura de Dados (DPADF 0056)

Estrutura de Dados (DPADF 0056)

Estrutura de Dados (DPADF 0056)

Aula 11 Pilha Dinâmica. prof Leticia Winkler

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

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

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

INF P4-12/12/09 Questão 1 Nome:

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 22/09/2010

Estruturas de Dados I

Lista: conceito, representação e algoritmos

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Alocação Dinâmica de Memória

Estrutura de Dados (DPADF 0056)

Algoritmos e Estruturas de Dados II IEC013

SCC Algoritmos e Estruturas de Dados I

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila

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

Lista: conceito, representação e algoritmos

Árvores. Sérgio Carlos Portari Júnior

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

Estruturas de Dados Estruturas de Dados Fundamentais

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

Listas Lineares Ordenadas

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Introdução a Programação. Listas Encadeadas

Métodos Computacionais. Listas Encadeadas

BCC202 - Estrutura de Dados I

Tipos Abstratos de Dados. Estrutura de Dados

Módulo 10 Listas Encadeadas

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

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

Professora Jeane Melo

Criando seu próprio tipo de dado. Prof. Fabrício Olivetti de França

Fila. Fila. Biblioteca. Biblioteca. Biblioteca. Biblioteca. O que é? Para que serve? Algoritmos e Estruturas de Dados I

Lista: conceito, representação e algoritmos

Alocação Dinâmica de Memória

Fila. Algoritmos e Estruturas de Dados I. Baseado no material de Thiago A. S. Pardo. Debora Medeiros

Estrutura de Dados. Aula 07 Alocação Dinâmica

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 07: Filas

Alocação Dinâmica. Túlio Toffolo BCC202 Aula 02 Algoritmos e Estruturas de Dados I

12. Filas Interface do tipo fila

Ordenação - Motivação

BCC202 - Estrutura de Dados I

Estruturas de Dados Filas

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Algoritmos e Estruturas de dados

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

22/08/2011. Fila. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Fila. O que é? Para que serve?

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS

Algoritmos e Estruturas de Dados I

Universidade Federal do Ma Curso de Ciência da Computação

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

Fila. SCC0502 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 04 Pag.: 1

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Ponteiro. Ponteiro. Objetivo. Compreender a definição e dominar a implementação de ponteiros em C.

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Algoritmos e Estruturas de Dados II IEC013

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações

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

ALOCAÇÃO DINÂMICA DE MEMÓRIA

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

Linguagem C: Listas Encadeadas

INF 1620 P2-01/11/03 Questão 1 Nome:

Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

Carlos Eduardo Batista. Centro de Informática - UFPB

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

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

Ponteiros e Alocação Dinâmica. Prof. Péricles Miranda

Estrutura de Dados II. Prof. Sérgio Portari

Algoritmos e Estruturas de dados

Pesquisa em memória primária: hashing. Algoritmos e Estruturas de Dados II

ANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória

Fila. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Lista de Exercícios 04

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011

LINGUAGEM C: ALOCAÇÃO DINÂMICA

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

Fontes Bibliográficas. Listas Circulares. Função Imprime

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores

Aula 25: Alocação Dinâmica

INF 1007 Programação II

- Mapa de memória de um processo - Ponteiros

Estruturas de Dados Aula 11: TAD Pilha

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

Filas Implementação Sequencial

Transcrição:

Aula 7 Encadeamento de Memória Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Encadeamento de Memória através de Ponteiros

#define MAX 100 typedef struct fila { int comeco; int final; int vetor[max]; } Fila; Como poderia fazer para ter uma fila com mais de 100 posições?

Alocação estática ocorre em tempo de compilação. Quando o programa entra em execução ele reserva toda a memória necessária para sua execução; Alocação dinâmica ocorre em tempo de execução, não há reserva de memória na inicialização do programa. Quando há necessidade, a memória é alocada e posteriormente liberada.

São estruturas dinâmicas (a memória necessária é alocada durante a execução do programa); Devem ser utilizadas quando a organização física não necessariamente coincide com a organização lógica; No estudo das estruturas pilhas e filas a organização física contínua favorece a organização lógica, mas não é a única alternativa.

Como funciona? É necessário definir um tipo estruturado com um campo ou atributo para fazer a ligação entre elementos de mesmo tipo

Cada elemento de uma estrutura encadeada tem dois blocos: Elemento Área de Informações Área de Apontadores ou Elos a d b c f e

Como representar um encadeamento? struct elemento { int valor; struct elemento* proximo } Solução: PONTEIROS! (a estrutura contém um apontador para ela própria)

Uma fila poderia ser implementada como uma estrutura encadeada? 34 56 67 início 12 final FILA 14 9

typedef struct elemento { int valor; struct elemento* proximo; } Elemento; //Definição da fila //Dois apontadores: início e final typedef struct fila { Elemento* inicio; Elemento* final; } Fila;

Fila* criafila(); void liberafila(fila* p); As operações são exatamente as mesmas? int inserir(fila* p, int v); int retirar(fila* p, int* v); int estahvazia(fila* p); int estahcheia(fila* p);

NULL 34 NULL início final f NULL 67 56 NULL NULL 34 a f = criafila(); inserir(f, 34); inserir(f, 56); inserir(f, 67); int a; retirar(f, &a); liberafila();

Fila* criafila(); Aloca memória para a estrutura física; Inicializa os controles de início e o fim da fila; Retorna um ponteiro para a estrutura criada; void liberafila(fila* p); Recebe um ponteiro para uma estrutura do tipo fila e libera a memória ocupada por ela (será necessário percorrer todos os elementos da fila para liberar individualmente seus elementos);

int estahvazia(fila* p); O que caracteriza uma fila vazia? O início e o fim da fila não apontam para nenhum elemento; int estahcheia(fila* p); O que caracteriza uma fila cheia? Com alocação dinâmica a única chance da fila ficar cheia é se ela ocupar toda a memória do computador;

int inserir(fila* p, int v); Recebe um ponteiro para uma estrutura do tipo fila e um valor a ser enfileirado; Cria um novo elemento atribuindo o valor de v ; Se houve sucesso (há espaço para o novo elemento) O apontador do elemento apontado pelo fim da fila passa a apontar para o novo elemento; O apontador do fim da fila aponta para o novo elemento; Se o apontador de início é NULL então ele também aponta para o novo elemento;

int retirar(fila* p, int* v); Recebe um ponteiro para uma estrutura do tipo fila e um ponteiro para uma variável inteira; Verifica se a fila já não está vazia; Se não está, então... Guarda o valor do elemento apontado pelo início da fila no endereço da variável v ; O apontador de início da fila passa a apontar para o elemento que atualmente o elemento apontado pelo início da fila aponta; O elemento que era apontado pelo início da fila é destruído;

a = criafila(); inserir(a,10); inserir(a,20); inserir(a,30); int x; retirar(a, &x); printf("elemento '%d' retirado",x); liberafila(a); Mas isso é exatamente como já fizemos antes? A construção de um TAD abstrai do usuário final a forma como o mesmo foi implementado. Basta conhecer a interface do TAD para utilizá-lo.

Exercícios para fixação

Que tal re-implementar o TAD Pilha utilizando-se de encadeamento de memória? Basta um apontador para indicar o topo da pilha; O mesmo Elemento utilizado no exemplo da fila pode ser reaproveitado;