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

Documentos relacionados
Pilhas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Filas Implementação Sequencial

Aplicações de listas e outras estruturas

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

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I

Aplicações de listas Outras estruturas

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I

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

Fila e Deque. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

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

Estruturas de Dados Filas

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas

Aula 7 Encadeamento de Memória

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

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

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Fila. Algoritmos e Estruturas de Dados I

Estruturas de Dados - Filas

LP II Estrutura de Dados

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

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

Estrutura de Dados: Aula 3 - Linguagem C

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc.

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

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

10.1. Aula 10: Pilhas. O conceito de pilha. Algoritmos de inserção e remoção. Exemplo: Notação Polonesa

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

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

3.2.2 Pilha (LIFO - last in, first out) - Inserção e remoção apenas no final da lista.

Estruturas de Dados I Listas Estáticas

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

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS

Estrutura de Dados. Aleardo Manacero Jr.

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

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

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

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

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

LISTAS LINEARES. Estrutura de Dados

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

Filas. Prof. Jesus José de Oliveira Neto

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

INE5408 Estruturas de Dados

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

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

Tipos Abstratos de Dados

12. Filas Interface do tipo fila

Revisão de TDA, Pilhas e Filas

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

Estruturas de Dados I

Estruturas Compostas Parte II

Algoritmos e Estruturas de Dados II IEC013

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler

programas = estrutura de dados + algoritmos

16/11/2015 Lista Tipo de dado Lista - Implementação Lista - Implementação Lista - Implementação 3

Estruturas de Dados Estruturas de Dados Fundamentais

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

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

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

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

Filas Exemplo de Aplicação

Métodos Computacionais. Listas Encadeadas

Programação II. Filas (Queues) Bruno Feijó Dept. de Informática, PUC-Rio

Algoritmos e Estruturas de Dados I

Filas de Prioridade & Heaps

Estrutura de dados - Listas Encadeadas

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

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

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0!

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

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

1. Listas sequenciais versus listas ligadas. Lista sequencial

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

Melhores momentos AULA 14

Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256

Programação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida

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

Estruturas de Dados em C++ Conceitos. Leandro Tonietto jun-09

INE5408 Estruturas de Dados

Alocação Seqüencial VAL MAX TOPO

4. Listas, Pilhas, e Filas

4. Listas, Pilhas, e Filas

AED2 - Aula 22 Busca em largura, cálculo de distâncias

Estruturas de Dados Encadeadas

Pilhas e Filas. Prof. Walteno Martins Parreira Júnior.

BCC202 - Estrutura de Dados I

Estrutura de Dados II

Algoritmos e Estruturas de Dados II IEC013. TAD, Pilhas e Filas. Prof. César Melo

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

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

LP II Estrutura de Dados

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Estrutura de Dados (DPADF 0056)

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

Orientação a Objetos AULA 09

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

Transcrição:

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

Índice Introdução Aplicações Implementação / Modelagem Operações de uma fila TAD da Fila em C UDESC - Rui J. Tramontin Jr. 2

Introdução Fila é uma lista na qual as inserções são feitas em um lado (no fim da fila) e exclusões são feitas lado oposto (no início da fila). O primeiro elemento inserido será o primeiro a ser removido. São também chamadas de listas FIFO (First In First Out). sai entra início fim UDESC - Rui J. Tramontin Jr. 3

Introdução Características das filas: Dados são organizados pela ordem de entrada. Tipos de filas: Filas de espera (queues); Filas com duplo fim (deque double-ended queue ); Filas de espera com prioridades (priority queues). UDESC - Rui J. Tramontin Jr. 4

Aplicações Filas do sistema operacional Processos, impressão, etc. Simulação Filas para recursos quaisquer (ex. fila de banco). UDESC - Rui J. Tramontin Jr. 5

Operações de uma fila inicializa_fila(f) : criar uma fila F vazia. insere(item, F) : insere item no fim de F. remove(f) : elimina o elemento do início de F. inicio(f) : acessa o elemento do início da fila (sem eliminar). estah_vazia(f) : testa se F está vazia. esta_cheia(f) : testa se F está cheia. UDESC - Rui J. Tramontin Jr. 6

Exemplo inicializa() insere(12) insere(5) 12 5 12 insere(14) 14 remove() 14 5 remove() 14 5 12 UDESC - Rui J. Tramontin Jr. 7

Implementação Usando vetores (circulares ou não). Utilizando alocação dinâmica (lista encadeada). O foco desta aula será na implementação usando vetores. UDESC - Rui J. Tramontin Jr. 8

Implementação usando vetores Vantagens: Facilidade de implementação. Desvantagens: Vetores possuem um espaço limitado para armazenamento de dados. Necessidade de definir um espaço grande o suficiente para a fila. Necessidade de um indicador para o início e para o fim da fila. UDESC - Rui J. Tramontin Jr. 9

Implementação usando vetores Método de Implementação: A adição de elementos à fila resulta no incremento do indicador do fim da fila. A remoção de elementos da fila resulta no incremento do indicador do início da fila. Nessa abordagem, a fila rapidamente perderá espaço para a inserção de mais elementos! Como resolver isso? UDESC - Rui J. Tramontin Jr. 10

Implementação usando vetores Soluções comuns: Juntar os elementos sempre à esquerda, cada vez que se faz uma remoção! (Não recomendado, baixo desempenho) Imaginar o vetor como sendo circular, isto é, unir o fim do vetor ao seu início. (Melhor implementação!!) UDESC - Rui J. Tramontin Jr. 11

Modelagem da Fila Aspecto Estrutural: Vetor para armazenar as informações. Indicadores das posições de início e fim da fila. Constantes que indiquem o tamanho da fila e para codificar situações de erros. Pseudo-código: constantes MaxFila 100; ErroFilaVazia -1; // Underflow ErroFilaCheia -2; // Overflow tipo Fila { inteiro dados[maxfila]; inteiro inicio; inteiro fim; }; UDESC - Rui J. Tramontin Jr. 12

Inicialização da Fila procedimento inicializa_fila(var f: Fila) início f.inicio <- 0; f.fim <- 0; fim UDESC - Rui J. Tramontin Jr. 13

Insere na Fila função insere(var f: Fila; item: inteiro): inteiro início se estah_cheia(f) então retorne ErroFilaCheia senão f.dados[f.fim] <- item se f.fim = MaxFila-1 então f.fim <- 0; senão f.fim <- f.fim + 1; fimse retorne 1 fimse fim // vetor circular! UDESC - Rui J. Tramontin Jr. 14

Remove da Fila função remove(var f: Fila): inteiro var removido: inteiro início se estah_vazia(f) então retorne ErroFilaVazia senão removido <- f.dados[f.incio] se f.inicio = MaxFila-1 então f.inicio <- 0; senão f.inicio <- f.inicio + 1; fimse retorne removido fimse fim // vetor circular! UDESC - Rui J. Tramontin Jr. 15

Retorna elemento no início função início(f: Fila): inteiro início se estah_vazia(f) então retorne ErroFilaVazia senão retorne f.dados[f.inicio] fimse fim UDESC - Rui J. Tramontin Jr. 16

Está Cheia e Está Vazia Quando da inicialização da pilha, os campos inicio e fim têm valor 0. (está poderia ser a condição de fila vazia?) Como a fila é circular, inserções e remoções alteram a posição de início e fim: Se a fila esvaziar, início e fim podem não ser 0. No entanto, serão iguais! (E agora? fila está vazia se início == fim?) UDESC - Rui J. Tramontin Jr. 17

Está Cheia e Está Vazia No entanto, quando a fila está cheia, início também será igual a fim. PROBLEMA: Como distinguir entre fila cheia e fila vazia? Soluções comuns: Manter sempre uma posição vazia no vetor entre o indicador de início e o indicador de fim. Definir um indicador do número de elementos que a fila contém. Por exemplo, vamos mostrar esta solução... UDESC - Rui J. Tramontin Jr. 18

Re-Modelagem da Fila Adicionando o campo que indica o número de elementos. constantes MaxFila 100; ErroFilaVazia -1; // Underflow ErroFilaCheia -2; // Overflow tipo Fila { inteiro dados[maxfila]; inteiro inicio; inteiro fim; inteiro num_elementos; }; UDESC - Rui J. Tramontin Jr. 19

Re-Modelagem da Fila Além da estrutura de dados, as seguintes funções devem ser adaptadas: inicializa_fila: num_elementos deve ser inicializado com 0; insere: num_elementos deve ser incrementado (opcionalmente, num_elementos pode ser retornado, ao invés de 1); remove: num_elementos deve ser decrementado; Usando esse indicador, as funções estah_cheia e estah_vazia podem ser facilmente implementadas... UDESC - Rui J. Tramontin Jr. 20

Testa se Fila está cheia função estah_cheia(f: Fila): booleano início se f.num_elementos = MaxFila então retorne VERDADEIRO senão retorne FALSO fimse fim UDESC - Rui J. Tramontin Jr. 21

Testa se Fila está vazia função estah_vazia(f: Fila): booleano início se f.num_elementos = 0 então retorne VERDADEIRO senão retorne FALSO fimse fim UDESC - Rui J. Tramontin Jr. 22

TAD da Fila em C (Fila.h) // definição de constantes #define MAX_FILA 50 #define ERRO_FILA_VAZIA -1 #define ERRO_FILA_CHEIA -2 // define estrutura e tipo Pilha typedef struct { int dados[max_fila]; int inicio; int fim; int num_elementos; } Fila; // cabeçalho das funções void inicializa_fila(fila *fila); int estah_vazia(fila fila); int estah_cheia(fila fila); int insere(fila *fila, int valor); int remove(fila *fila); int inicio(fila fila); UDESC - Rui J. Tramontin Jr. 23

Exercício Implementar as operações do TAD: Fila.c; Escrever um programa em C que utilize o TAD Fila. UDESC - Rui J. Tramontin Jr. 24