Centro de Ciências Exatas
Departamento de Computação
Curso: Bacharelado em Ciência da Computação
Disciplina: 5COP069 - Estrutura de Dados A
Professor: Roberto Vedoato
Lista de Exercícios 02 – Filas
Instruções
• Os exercícios devem ser resolvidos individualmente ou em dupla;
• Documente e idente o código;
• Compacte todos arquivos (projeto, fontes e cabeçalhos, exceto o executável), num arquivo
denominado com nome da dupla (ex: Joao_Maria.rar) e o envie por e-mail com o
assunto: UEL - EDA - Lista 02 para [email protected];
• Ao enviar o e-mail certifique-se de ativar a confirmação de recebimento e o registro de itens
enviados;
• Prazo de entrega: 14/04/2008;
• Não serão aceitos exercícios entregues fora destas especificações.
Exercícios
Considerando que os TDAs de Fila devem prover as operações válidas abaixo, resolva os próximos
exercícios:
Fila(); ou Fila (int tamanho=10);
criar uma fila vazia (no caso de alocação estática deve ser informado o tamanho da fila, caso não
informado, o padrão é 10 elementos do tipo de informação)
~Fila();
destruir a fila
void reinicia();
reiniciar a fila
void enfila(const TipoInfo &elemento);
inserir um nó no topo da fila
bool desenfila(TipoInfo &valor);
excluir o nó do topo de fila
bool buscaInicio(TipoInfo &valor);
consultar nó do início da fila
bool alteraInicio(const TipoInfo &valor);
alterar nó do início da fila
bool testaVazia();
testar se a fila está vazia
bool testaCheia();
testar se a fila está cheia (apenas para alocação estática)
1. Implemente o TDA Fila Estática Simples.
2. Implemente o TDA Fila Estática com Movimentação de Dados na Remoção.
3. Implemente o TDA Fila Estática com Movimentação de Dados na Inserção.
4. Implemente o TDA Fila Estática Circular.
5. Implemente o TDA Fila Dinâmica Simplesmente Encadeada.
6. Implemente o TDA Fila Dinâmica Duplamente Encadeada.
7. Implemente o TDA Fila Dinâmica Circular Duplamente Encadeada.
8. Implemente para um TDA Fila Dinâmica Simplesmente Encadeada uma operação cuja função seja
a concatenação da fila com outra recebida como argumento.
9. Implemente uma aplicação para a fila de um banco. Ao final da simulação devem ser mostrados o
total de clientes atendidos no expediente e fora dele, o tempo médio na fila dos clientes
atendidos no expediente e fora dele, o total de hora extra, o total geral de clientes atendidos e o
tempo médio geral na fila e também qual a maior e menor espera na fila.
Centro de Ciências Exatas
Departamento de Computação
Curso: Bacharelado em Ciência da Computação
Disciplina: 5COP069 - Estrutura de Dados A
Professor: Roberto Vedoato
Para tanto, considere as observações e o algoritmo a seguir.
•
•
•
•
A quantidade de caixas para atendimento aos clientes é M;
A possibilidade de chegar uma pessoa na fila é 1/N;
A unidade total de tempo de funcionamento do banco é T;
O tempo máximo de um atendimento ao cliente é S.
Algoritmo:
#define LIVRE 0
#include <time.h>
...
int clienteChegou()
{
int x;
x = rand() % N;
return (x == 0);
}
...
int main()
{
int caixa[M];
int relogio=0, espera=0, nclientes=0, chegada, i;
...
// inicia semente para geração de números aleatórios
srand((unsigned) time(NULL));
// liberar todos caixas para atendimento
for (i=0; i < M; i++)
caixa[i] = LIVRE;
// Simulação
// expediente
while (relogio < T)
{
if (clienteChegou() )
{
filaBanco.enfila(relogio);
nclientes++;
}
for (i=0; i < M; i++)
{
if (caixa[i]==LIVRE && !filaBanco.testaVazia())
{
filaBanco.desenfila(chegada);
caixa[i] = clienteOperacao();
espera = espera + (relogio - chegada);
nClientesAtendidos++;
}
else
// o i-ésimo caixa executou uma unidade de tempo no atendimento
if (caixa[i] != LIVRE)
caixa[i]--;
}
relogio++;
}
// após o expediente, atender todos os clientes que ainda esperam na fila
Download

Lista de Exercícios 02 – Filas Instruções • Os exercícios devem ser