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

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

PCC104 - Projeto e Análise de Algoritmos

Pilhas. Prof. Túlio Toffolo BCC202 Aula 11 Algoritmos e Estruturas de Dados I

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

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 06: Pilhas

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

Filas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

BCC202 - Estrutura de Dados I

Estruturas de Dados Básicas

Listas Lineares. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Estruturas de Dados Básicas

Estruturas de Dados Aula 11: TAD Pilha

Pilha. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

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

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

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

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

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

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

LISTAS LINEARES. Estrutura de Dados

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Estrutura de Dados II. Prof. Sérgio Portari

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

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

Estruturas de Dados Básicas

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

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

Estruturas de Dados Básicas

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

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

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

Estruturas de Dados Básicas

Lista de Exercícios 04

Algoritmos e Estruturas de Dados II IEC013

Estruturas de Dados Filas

Algoritmos e Estruturas de Dados II IEC013

Árvores de Pesquisa (Parte I)

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).

Aula T13 BCC202 Árvores. Túlio Toffolo

Aula 7 Encadeamento de Memória

Filas Implementação Sequencial

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

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

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

Estrutura de dados - Listas Encadeadas

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

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

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Listas Lineares. continuando...

Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode

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

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

Linguagem C: Listas Encadeadas

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Fila. Algoritmos e Estruturas de Dados I

Listas Lineares Ordenadas

Conceitos. Pilhas e Filas. Conceitos e Implementação em linguagem C. Maria Adriana Vidigal de Lima. Março

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

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

Pesquisa Sequencial e Binária

Estruturas de Dados Encadeadas

SCC Algoritmos e Estruturas de Dados I

AULA 12 ESTRUTURA DE DADOS

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

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

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Estruturas de Dados - Filas

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

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

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Métodos Computacionais. Listas Encadeadas

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

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

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aula 21 Algoritmos e Estruturas de Dados I

Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Melhores momentos AULA 14

1. Listas sequenciais versus listas ligadas. Lista sequencial

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

Lista Encadeada (Linked List)

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

Estrutura de Dados (DPADF 0056)

Aula 11 Pilha Dinâmica. prof Leticia Winkler

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

Capítulo 8: Abstrações de dados

Estrutura de Dados Listas

Árvores. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Transcrição:

Filas Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 12 Algoritmos e Estruturas de Dados I

O que é uma fila? 1 4 2 3 Fila 1 2 3 4

TAD Fila Tipo Abstrato de dados com a seguinte característica: O primeiro elemento a ser inserido é o primeiro a ser retirado/ removido (FIFO First in First Out) TAD conhecida como queue Analogia: fila bancária, fila do cinema. Usos: Sistemas operacionais: fila de impressão, fila de processamento, etc.

TAD Fila (Fila, x). 2. Fila_Enfileira Faz a fila ficar vazia. vazia; senão retorna false. retirando-o da fila. função retorna true se a fila está da fila, 4. Fila_EhVazia(Fila). Esta função retorna true se a fila está vazia; senão retorna false.

TAD Fila Existem várias opções de estruturas de dados que podem ser usadas para representar filas. As duas representações mais utilizadas são: Por meio de ponteiros Por meio de arrays 5

FILAS POR MEIO DE PONTEIROS

Filas usando Ponteiros nova, Há ligá-la, os apontadores Início célula e Fim após a célula que contém x n e colocar nela o Para desenfileirar está vazia, os apontadores Início e Fim apontam para a célula cabeça. Para enfileirar um novo item, basta criar uma célula nova, ligá-la após a célula que contém x n e colocar nela o novo item. Para desenfileirar o item x 1, basta desligar a célula após a cabeça da lista.

Estrutura da Fila usando Ponteiros A fila é implementada por meio de células Cada célula contém um item da fila e um apontador para outra célula. A estrutura TipoFila contém um apontador para a frente da fila (célula cabeça) e um apontador para a parte de trás da fila (fim).

Cria Fila Vazia (usando célula cabeça) Cabeça NULL NULL Fim 9

Inserção de Elementos na Fila NULL Fim Opção única de posição onde pode inserir Final da fila (ou seja, última posição) 10

Inserção de um elemento na Fila NULL Fim NULL 11

Retirada de Elementos da Fila NULL Fim Opção única de posição onde pode retirar Início da fila (ou seja, primeira posição) 12

Retirada de um elemento da Fila NULL Fim 13

Implementação da Fila por Ponteiros typedef struct { int chave; } TItem; typedef struct Celula { TItem item; struct Celula *; } TCelula; typedef struct { TCelula *cabeca; TCelula *fim; } TFila; 14

Implementação da Fila por Ponteiros void TFila_Inicia(TFila *f) { f->cabeca = (TCelula*) malloc(sizeof(tcelula)); f->fim = f->cabeca; } int TFila_EhVazia(TFila *f) { return f->cabeca == f->fim; } void TFila_Enfileira(TFila *f, TItem item) { TCelula *aux = (TCelula*) malloc(sizeof(tcelula)); aux->item = item; aux-> = NULL; f->fim-> = aux; f->fim = aux; } 15

Implementação da Fila por Ponteiros int TFila_Desenfileira(TFila *f, TItem *item) { if (TFila_EhVazia(f)) return 0; TCelula *aux = f->cabeca->; f->cabeca-> = f->cabeca->->; *item = aux->item; free(aux); return 1; } void TFila_Limpa(TFila *f) { TItem t; while (TFila_Desenfileira(f, &t)); } 16

FILAS POR MEIO DE ARRAYS

Filas por meio de Arrays Os itens são armazenados em posições contíguas de memória. A operação Enfileira faz a parte de trás da fila expandirse. A operação Desenfileira faz a parte da frente da fila contrair-se. A fila tende a caminhar pela memória do computador, ocupando espaço na parte de trás e descartando espaço na parte da frente.

Filas por meio de Arrays Com poucas inserções e retiradas, a fila vai ao encontro do limite do espaço da memória alocado para ela. Solução: imaginar o array como um círculo. A primeira posição segue a última.

Filas por meio de Arrays A fila se encontra em posições contíguas de memória, em alguma posição do círculo, delimitada pelos apontadores Início e Fim. Início indica a posição do primeiro elemento Fim a primeira posição vazia (posição após o último elemento) Para enfileirar, basta mover o apontador Fim uma posição no sentido horário. Para desenfileirar, basta mover o apontador Início uma posição no sentido horário.

Exercício Seja TLista o TAD Lista que implementa as seguintes funções: Void Lista_Inicia(TLista* plista) (faz com que a lista fique vazia) void Lista_Insere(TLista *plista,titem* pitem, int pos) (insere pitem na posição pos da lista) int Lista_Retira(TLista* plista, TItem* pitem, int pos) (retira o item na posição pos da lista e retorna em pitem) int Lista_Tamanho(Tlista *lista) Implemente a TAD TFila utilizando TLista Esta implementação é eficiente? Justifique sua resposta.

Perguntas?

Exercício Seja TLista o TAD Lista que implementa as seguintes funções: void TLista_Inicia(TLista *plista); int TLista_EhVazia(TLista *plista); int TLista_InsereP(TLista *plista, int p, TItem x); int TLista_RetiraP(TLista *plista, int p, TItem *px); int TLista_Tamanho(TLista *plista); Suponha ainda que você tem conhecimento de que TLista é uma lista encadeada Implemente a TAD TFila utilizando um TLista