









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Aula de estrutura de dados Filas Sequencial Circular e Fila encadeada com descritor
Tipologia: Notas de aula
1 / 16
Esta página não é visível na pré-visualização
Não perca as partes importantes!










1
Curso Superior de Tecnologia em Telemática Programação e Estruturas de Dados
Copyright© Prof. César Rocha [email protected]
ß Organização e implementação, características, vantagens, desvantagens, regras de utilização, operações básicas e algoritmos de implementação
ß Implementação das estruturas e algoritmos, criação das bibliotecasbibliotecas e práticas de laboratório
ß o primeiro a entrar na fila, será o primeiro a sair e ser atendido (retiramos ele do início ou frente da fila) ß o último cliente deve entrar no final da fila e, portanto, será o último a sair (ou ser atendido) na fila
ß Não podemos retirar qualquer cliente da fila! ß Apenas clientes que estão na frente da fila ß Não podemos inserir um cliente na fila de tal forma que ele não seja o último no conjunto de clientes
ß Existem nn elementos enfileirados; ß ß E1E1 é o elemento no início (ou frente) da fila; ß ß EnEn é o último elemento da fila;
ç Encadeada: neste TAD, os elementos da fila são elementos encadeados por ponteirosponteiros
é Circular: caso particular de filas. Iremos levantar e comentar a necessidade da implementação circular mais à frente
TFilaEnc f* (^12 )
8
å um vetor de elementos (tamanho pré-definido) ç duas variáveis que controlem a frente e o fim da fila _/ filaseq.h /_ **void criarFila(TFila *fila); int filaVazia(TFila *fila); int filaCheia(TFila *fila); int enfileirar(TFila *fila, int dado); int desenfileirar(TFila *fila, int d); void imprimir(TFila fila);
_/ filaseq.h /_ **void criarFila(TFila *fila); int filaVazia(TFila *fila); int filaCheia(TFila *fila); int enfileirar(TFila *fila, int dado); int desenfileirar(TFila *fila, int d); void imprimir(TFila fila);
_/ estruturação /_ typedef struct fila { int elementos[MAX]; int frente; int fim; }TFila;
_/ estruturação /_ typedef struct fila { int elementos[MAX]; int frente; int fim; }TFila;
ß Do jeito que está, pode-se chegar a uma situação (absurda) em que a fila estará vazia, mas nenhum elemento novo poderá mais ser inserido! ß Conclusão: a representação seqüencial, descrita anteriormente, parece não ser muito boa!
ß E fazer o deslocamento à esquerda de todos os elementos a cada retirada na frente da fila, mas... ß ...e se a fila tivesse 100 elementos? ß Havíamos criticado o deslocamento da lista seqüencial!
ß Para isso, pode-se incrementar as posições do vetor de maneira “circular” ß Ou seja, se o último elemento da fila ocupar a última posição do vetor, inserimos os novos elementos a partir do início do vetor!
Insere G (^) G D E F Frente= 2 e Fim= 0
ß O primeiro elemento (início) da lista encadeada poderá representar a frente atual da fila ß Assim, cada novo elemento será inserido no final da lista. Conseqüentemente e, sempre que solicitado, retiramos o elemento a partir do início da lista
ß Desta forma, vamos precisar de apenas duas funções auxiliares na lista: å uma para inserir no fim (enfileirar) ç outra para remover do início (desenfileirar)
ß Há apenas uma desvantagem:
ß Para cada elemento a ser inserido na fila, teremos que percorrer todos os nodos até encontrar o último.
14
100 110 120
TFilaEncCab f 03 Vantagens
VantagensVantagens
Cabeça
ß Este é apenas um dos assuntos abordados na prova!