Manaus - AM
2017
DANIEL KHALIL RA: D272DJ-0
JORGE PATU RA: D39ICG-6
MATEUS SILVA RA: D32337-7
NAYLCSON ARAÚJO RA: D402DI-3
LINGUAGEM C
Estrutura de Dados - Fila
Manaus - AM
2017
2
SUMÁRIO
1. INTRODUÇÃO ........................................................................................................ 4
5. VARIÁVEIS ............................................................................................................. 9
5.1 Tipos de dados ................................................................................................... 10
5.1.1. Tipos de dados mais comuns em linguagem C .............................................. 10
5.2. Sintaxe de declarações de variáveis em C ........................................................ 10
5.3. Endereço de uma variável ................................................................................. 10
5.4. Regras para criação de nomes de variáveis ...................................................... 11
5.5. Endereço de uma variável ................................................................................. 11
11. CONCLUSAO...................................................................................................... 20
1. INTRODUÇÃO
2. FILAS (QUEUE)
Imagem 1
Imagem 4
2.3.2. Inserção
Processo de inserção e remoção em extremidades opostas da fila faz com
que a fila “ande” no vetor;
Inserção dos elementos 1.4, 2.2, 3.5, 4.0.
Imagem 5
3. Código fonte
#include <stdio.h>
#include <stdlib.h>
struct Node{
int num;
struct Node *prox;
};
typedef struct Node node;
int tam;
int menu(void);
void opcao(node *FILA, int op);
void inicia(node *FILA);
int vazia(node *FILA);
node *aloca();
void insere(node *FILA);
node *retira(node *FILA);
void exibe(node *FILA);
void libera(node *FILA);
int main(void)
{
node *FILA = (node *) malloc(sizeof(node));
if(!FILA){
printf("Sem memoria disponivel!\n");
exit(1);
}else{
inicia(FILA);
int opt;
do{
opt=menu();
opcao(FILA,opt);
}while(opt);
free(FILA);
return 0;
}
}
int menu(void)
{
int opt;
printf("Escolha a opcao\n");
printf("0. Sair\n");
printf("1. Zerar fila\n");
printf("2. Exibir fila\n");
printf("3. Adicionar Elemento na Fila\n");
printf("4. Retirar Elemento da Fila\n");
printf("Opcao: "); scanf("%d", &opt);
return opt;
}
10
case 1:
libera(FILA);
inicia(FILA);
break;
case 2:
exibe(FILA);
break;
case 3:
insere(FILA);
break;
case 4:
tmp= retira(FILA);
if(tmp != NULL){
printf("Retirado: %3d\n\n", tmp->num);
free(tmp);
}
break;
default:
printf("Comando invalido\n\n");
}
}
node *aloca()
{
node *novo=(node *) malloc(sizeof(node));
if(!novo){
printf("Sem memoria disponivel!\n");
exit(1);
}else{
printf("Novo elemento: "); scanf("%d", &novo->num);
return novo;
}
}
11
if(vazia(FILA))
FILA->prox=novo;
else{
node *tmp = FILA->prox;
while(tmp->prox != NULL)
tmp = tmp->prox;
tmp->prox = novo;
}
tam++;
}
node *tmp;
tmp = FILA->prox;
printf("Fila :");
while( tmp != NULL){
printf("%5d", tmp->num);
tmp = tmp->prox;
}
printf("\n ");
int count;
for(count=0 ; count < tam ; count++)
printf(" ^ ");
printf("\nOrdem:");
for(count=0 ; count < tam ; count++)
printf("%5d", count+1);
printf("\n\n");
}
{
if(!vazia(FILA)){
node *proxNode,
*atual;
atual = FILA->prox;
while(atual != NULL){
proxNode = atual->prox;
free(atual);
atual = proxNode;
}
}
}
13
3. CONCLUSÃO
Sendo assim, conclui-se que uma fila é uma estrutura de dados dinâmica que
admite remoção de elementos e inserção de novos objetos. Mais especificamente,
uma fila é uma estrutura sujeita à seguinte regra de operação: sempre que houver
uma remoção, o elemento removido é o que está na estrutura há mais tempo.
Em outras palavras, o primeiro objeto inserido na fila é também o primeiro a
ser removido. Essa política é conhecida pela sigla FIFO (First-In-First-Out).
Na resolução de um problema por meio de um programa, a primeira
providência é conceber um algoritmo adequado. A eficiência de um algoritmo
qualquer está intimamente relacionada à disposição, na memória, dos dados que
são tratados pelo programa.
14
4. REFERENCIAS
https://pt.slideshare.net/adrianots/estrutura-de-dados-filas
https://www.caelum.com.br/apostila-java-estrutura-dados/filas/
http://homepages.dcc.ufmg.br/~cunha/teaching/20121/aeds2/lists.pdf
https://pt.wikibooks.org/wiki/Algoritmos_e_Estruturas_de_Dados/Filas
https://www.ime.usp.br/~pf/algoritmos/aulas/fila.html
http://usuarios.upf.br/~mcpinto/ed-tsi/ed_parte01.pdf