Estrutura de Dados Básica



Documentos relacionados
Estrutura de Dados Básica

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

Filas: conceitos e implementações

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

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

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

Métodos Computacionais. Fila

UFSC-CTC-INE INE Estruturas de Dados. Filas. Prof. Ronaldo S. Mello 2002/2. Fila

Gerenciamento de memória

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

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

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

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

Introdução a Teoria das Filas

Prof. Marcelo Nogueira

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.

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

Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista.

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

PROGRAMAÇÃO II 3. FILA DINÂMICA

Algoritmos e Estruturas de Dados I

Aplicação da Teoria das Filas à Operação de Transportes

Especificação do Trabalho Prático

Realizando cálculos para o aparelho divisor (I)

Memória - Gerenciamento. Sistemas Operacionais - Professor Machado

PROCESSO DE NEGOCIAÇÃO

Unidade 5: Sistemas de Representação

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

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

4) Abaixo está representado o nó_i do arquivo SO.txt em um sistema UNIX.

COMO PROGRAMAR SEU TIME

Simulado Banco de Dados I Bimestre 1 Capítulo 1 Projeto Lógico de Banco de Dados

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba

Disciplina Técnicas de Modelagem

REGULAMENTO DE FUNCIONAMENTO DO NEAP Aprovado pela Portaria 23/2005

Capítulo 4 Gerenciamento de Memória

Tipos de Dado Abstrato: Listas, Filas e Pilhas

Complexidade de Algoritmos

Programação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.

MODELAGEM E SIMULAÇÃO

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Avaliação da Aprendizagem no Ensino Superior Prof. Dr. Dirceu da Silva

UNIDADE III Aula 6 Cálculo do CRC. Fonte: Othon M. N. Batista

Usando o do-file editor Automatizando o Stata

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

Parametrização Itens para Movimentação

Aula 4 Estatística Conceitos básicos

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

TRUQUE: DESLIGUE OS AVISOS DE

Uma conceituação estratégica de "Terceiro Setor"

Manual SIGEESCOLA Matrícula

Especificação do Trabalho

Posições de template do projeto portal padrão

O princípio multiplicativo

Coordenadas absolutas e relativas

Manual de Noções Básicas de Cobrança

Eventos independentes

Implementando uma Classe e Criando Objetos a partir dela

1. A corrida de vetores numa folha de papel.

Operações com números racionais decimais

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

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Trabalho 3: Agenda de Tarefas

1 Introdução simulação numérica termoacumulação

VERSÃO VERSÃO FINANCEIRO NEFRODATA ESTOQUE FINALIZAÇÃO: 10 JUN.

Sistemas de Apoio à Decisão

Pedro Ribeiro 2014/2015

CIRCULAÇÃO EM ROTUNDAS

Introdução. Introdução. Objetivos da Aula. Bases Computacionais da Ciência(BC-0005)

Escrito por TQS Admin Qua, 28 de Agosto de :35 - Última revisão Sex, 24 de Abril de 2015

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

Capítulo 4 Gerenciamento de Memória

DICAS PARA CÁLCULOS MAIS RÁPIDOS ARTIGO 06

Psicanálise: técnica para discernir e descobrir os processos psíquicos.

Sistemas Operativos. Deadlocks. 3º ano ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@ipiaget.net)

Estruturas de Dados com Jogos. Capítulo 3 Filas - Alocação Sequencial e Estática

Tabelas vista de estrutura

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

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

Velocidade Média Velocidade Instantânea Unidade de Grandeza Aceleração vetorial Aceleração tangencial Unidade de aceleração Aceleração centrípeta

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

Corte composto. abaixo, por apresentarem seus elementos internos fora de alinhamento, precisam de outra maneira de se imaginar o corte.

Estrutura de Dados Básica

Aula prática Como utilizar um multímetro

Eng Civil Washington Peres Núñez Dr. em Engenharia Civil pela Universidade Federal do Rio Grande do Sul

Manual do Cliente. Alu Tracker Monitoramento Veicular

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Circuitos Retificadores

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Sumário. Deadlock. Definição. Recursos. M. Sc. Luiz Alberto

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA 3. SEQÜÊNCIA DA AULA. 3.1 Iniciando o PowerPoint

Cobrança Bancária. Contas / Manutenção.

TIM BROWN, ESCOLA DE ULM E BRANCUSI ESTÃO MAIS PERTO DE VOCÊ. CONHEÇA JÁ NOSSOS CURSOS E MÉTODO ONLINE.

Dinâmica de um Sistema de Partículas Faculdade de Engenharia, Arquiteturas e Urbanismo FEAU

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

Estatística II Antonio Roque Aula 9. Testes de Hipóteses

Transcrição:

Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 9: Filas com Alocação de Memória Estática O objetivo desta aula é apresentar estrutura de dados Fila e suas aplicações. Motivação A estrutura de dados Fila talvez seja a organização de dados mais conhecida popularmente. As pessoas normalmente se organizam em fila para serem atendidas nos caixas de supermercados e bancos; carros ficam em fila durante os congestionamentos, muito comuns em grandes cidades; pacientes ficam em fila nos consultórios médicos para serem atendidas; entre outros exemplos que podemos encontrar em nosso dia-a-dia. Filas são interessantes, por exemplo, em bancos, pois implementam um critério honesto (ao menos à maioria das pessoas) de atendimento aos seus clientes: o primeiro a entrar na fila é o primeiro a ser atendido. Após o primeiro sair da fila, será a vez do segundo e assim por diante. Esse critério é conhecido como FIFO (First-In, First-Out), ou seja, o primeiro a entrar será o primeiro a sair. Definição do Tipo Abstrato de Dados Fila Uma TAD Fila é um conjunto de n elementos (ou nós): x 0, x 1,..., x n-1, cuja propriedade estrutural envolve as posições relativas de seus nós. Supondo n > 0, temos que: 1. X 0 é o primeiro nó, o primeiro da fila. 2. para 0 < k < n, x k é precedido por x k 1 e seguido por x k +1 3. x n-1 é o último nó, o último da fila: ultimo = n-1. 4. ultimo = -1 indica que a Fila está vazia. 5. Algumas operações possíveis: a. Criar Fila vazia. b. Destruir Fila. c. Esvaziar Fila. d. Verificar se a Fila está vazia. e. Verificar se a Fila está cheia. f. Retornar tamanho da Fila. g. Retornar nó que é o primeiro da fila. h. Entrar na fila. i. Sair da fila. 1

Implementação estática do TAD Fila em C++ O TAD Fila será implementado utilizando variáveis estáticas, no caso um vetor. A sua implementação dinâmica será estudada na aula 11. A implementação do TAD Pilha, descrita abaixo em linguagem C++, foi dividida em dois arquivos. O primeiro, main.cpp, utiliza o TAD Fila, criando duas filas f e f1 de duas formas diferentes, insere e retira alguns valores e, no final, tenta retirar um nó de uma fila vazia. Naturalmente, isso irá gerar um erro conhecido como underflow de fila. Por outro lado, o TAD fila também está preparado para gerar um erro quando se tenta inserir mais do que o tamanho possível. Tal erro é conhecido como overflow de fila. O segundo arquivo, fila.h, contém a implementação do TAD fila. As explicações dos exemplos a seguir serão realizadas durante as aulas práticas em laboratório. Arquivo 1: main.cpp 2

Arquivo 2: fila.h 3

Arquivo 2: fila.h (continuação) Fila Circular Note que a operação de remoção da implementação apresentada, necessita deslocar os elementos uma posição à esquerda, para manter sempre o primeiro elemento da fila na posição zero. Uma alternativa de implementação, para evitar esse deslocamento, é assumir que a fila é circular: primeiro 10 20 30 fim fim primeiro 0 1 2 3 4 5 6 7 30 10 20 Na fila circular com capacidade de no máximo m elementos, precisamos diferenciar quando a fila está vazia e quando a fila está cheia. Para isso, assumimos que exista uma variável qtd é incrementada ou decrementada sempre que se insere ou se retira elementos da fila respectivamente. Assim, para criar a fila faça: 1. fim = primeiro = qtd = 0. Para verificar se a fila está cheia faça: 1. Se qtd = m então fila cheia. Para verifica se a fila está vazia faça: 1. Se qtd == 0 então fila vazia. 4

Para inserir um elemento x na fila que não esteja cheia faça: 1. v[fim] = x 2. qtd = qtd + 1 3. fim = fim + 1 4. Se fim == m então fim = 0. Para retirar um elemento x da fila que não esteja vazia faça: 1. x = v[inicio] 2. qtd = qtd 1 3. inicio = inicio + 1 4. Se inicio == m então inicio = 0 5. Retorne x. Observe que as variáveis fim e inicio são sempre verificadas após sofrerem o incremento (linhas 3 e 4). Isso pode ser evitado utilizando a operação de resto de divisão: 3. fim = fim + 1 4. Se fim == m então fim = 0. para 3. fim = (fim+1)%m 3. inicio = inicio + 1 4. Se inicio == m então inicio = 0. para 3. inicio = (inicio +1)%m Exercícios 1. Incremente os programas main.cpp do exemplo apresentado, de forma a verificar se todas as operações do TAD Fila estão funcionando corretamente. Caso necessário utilize o recurso de depuração (debug) do IDE Dev-C++. 2. Faça as alterações necessárias no exemplo apresentado para tornar a classe fila genérica, como foi feito para a implementação do TAD Pilha (aula 8). 3. Apresente a ordem de complexidade algorítmica da operação de remoção da implementação apresentada. 4. Implemente em C++ o TAD FilaCircular e demonstre a sua utilização. 5