Buscar

Algoritmos e Estrutura de Dados - 06


Prévia do material em texto

Unidade 2
Seção 3
iStock 2018
Algoritmos eAlgoritmos e 
Estrutura de DadosEstrutura de Dados
1. Acesse a loja de
aplicativos do seu
smartphone e baixe
um leitor de QR CODE. 
 
2. Abra o leitor e
fotografe o código. 
 
3. Você será
direcionado a este
conteúdo. 
Bons estudos!
Acesse este conteúdo pelo
smartphone
O que é isso? 
Clique no código e saiba
mais.
1
Webaula 3
Operações e Problemas com
Filas
Na webaula anterior estudamos sobre as operações e problemas com pilhas, e como
implementar as funções necessárias para criar um código dessa estrutura. Para darmos
prosseguimento em nossos estudos, nesta seção você vai conhecer e aprender sobre as
operações de inserção, remoção e verificação e se uma fila está vazia ou não.
iStock 20182
Inserir elementos na fila
Segundo Drozdek (2016), a estrutura de dados
de fila possui operações similares às da
estrutura de pilha para gerenciamento de uma
fila, como:
Cria uma fila vazia.
Insere um elemento no fim da fila.
Remove o elemento do início da fila.
Verifica se a fila está vazia.
Libera a fila.
3
Explore a galeria e conheça a programação para efetuar a inserção dos elementos.
Para iniciar uma fila é necessário definir o tipo da estrutura a ser
utilizada. A definição da estrutura pode ser dada pela
implementação do trecho abaixo: 
 
#define N 100 
struct fila { 
                int n; 
                int ini; 
                char vet[N]; 
}; 
typedef struct fila Fila;

4
Remover elementos da fila
Como você já aprendeu, em uma fila só é
possível remover um elemento pelo início.
Veja como podemos implementar o trecho
de código para remoção do elemento e
apresentar seu valor no retorno da função:
float remove_fila (Fila* f){ 
                   char elem; 
                   if (fila_vazia(f)){ 
                                   printf("A Fila esta
vazia\n"); 
exit(1); 
                   } 
                  elem = f -> vet[f -> ini]; 
                  f -> ini = (f -> ini + 1) % N; 
                  f -> n--; 
                  return elem; 
}
5
Informar se a fila está vazia
Outra função que podemos implementar
na fila, é a de verificação se a fila está vazia
ou não. No trecho de remoção de um
elemento da fila já realizamos a chamada a
essa função, veja como ela pode ser
implementada com o trecho do código:
int fila_vazia (Fila* f){ 
                return (f -> n == 0); 
}
Podemos utilizar uma função importante
para podermos liberar a alocação de
memória após o uso da fila e assim, limpar
as variáveis utilizadas pelo sistema.
A implementação do trecho pode ser dado
por:
void libera_fila(Fila* f){ 
                 free(f); 
}
6
Filas circulares
Segundo Silva (2007), as filas não apresentam
uma solução completa, sendo que, mesmo
chegando ao final do vetor poderemos ter a fila
cheia mesmo não estando cheia, uma vez que
elementos podem ter sido removidos e para
isso, podemos utilizar as filas circulares como
solução para essa situação. A fila circular possui
a seguinte definição em sua implementação:
Um vetor para os elementos.
Um valor inteiro para o tamanho da fila.
Um valor inteiro para o início da fila.
Um valor inteiro para o fim da fila.
7
Conforme Drozdek (2016), em uma fila circular,
o conceito de circularidade se baseia quando o
último elemento da fila está na última posição
do vetor, e é adjacente à primeira. Assim, são os
ponteiros, e não os elementos da fila que se
movem em direção ao início do vetor. Veja a
imagem de uma estrutura da fila circular.
Fonte: elaborado pelo autor.
8
Explore a galeria e conheça a implementação de uma estrutura de fila circular.
/* Vamos definir a constante N com valor de 10 */ 
#define N 10 
struct filacirc {  /* Criação da estrutura da Fila Circular */ 
                 int tam, ini, fim; 
                 char vet[N]; 
}; 
typedef struct filacirc FilaCirc; 
9
Para a solução de desafios referentes a filas, aprendemos as estruturas de dados dinâmicas
essenciais, bem como suas aplicações na solução de problemas. Com essas informações,
será possível criar novos algoritmos muito bem estruturados e que serão utilizados para
soluções de novos problemas
iStock 201810
Vídeo de encerramento
11
https://fast.player.liquidplatform.com/pApiv2/embed/cef0e36cb56bc0d80571195a9e6072ec/2da892187fd25f2eba9fe0afab9421e3
Android:  
https://goo.gl/yAL2Mv
iPhone e iPad - IOS: 
https://goo.gl/OFWqcq
Aqui você tem na palma da sua mão a biblioteca digital para
sua formação profissional.
Estude no celular, tablet ou PC em qualquer hora e lugar
sem pagar mais nada por isso.
Mais de 450 livros com interatividade, vídeos, animações e
jogos para você.
Você já conhece o Saber?
0:00
12
https://play.google.com/store/apps/details?id=br.com.kroton.saber
https://goo.gl/yAL2Mv
https://itunes.apple.com/br/app/saber/id1030414048?mt=8
https://itunes.apple.com/br/app/saber/id1030414048?mt=8
Bons estudos!
13