O documento apresenta o conceito de filas, como funcionam e onde são utilizadas. Fila é uma estrutura de dados do tipo FIFO (First In, First Out) onde o primeiro elemento a entrar é o primeiro a sair. O documento explica como implementar filas usando lista encadeada e as operações como inserir no final, remover do início, verificar se está vazia. Também menciona o uso de filas em sistemas como servidores de mensagens.
3. ESTRUTURA DE DADOS – Prof. Thomás da Costa
Filas
Conceitos:
• Passamos por isso todos os dias.
• Temos filas nos bancos, elevadores, estacionamentos e etc.
• A fila é composta por elementos ou entidades. Exemplo: pessoas, carros,
motos e etc.
• A fila é um conceito computacional muito utilizado na área de tecnologia.
• Temos vários tipos de soluções e sistemas que utilizam filas.
FILAS
4. ESTRUTURA DE DADOS – Prof. Thomás da Costa
Filas
Conceitos:
F.I.F.O
FIRST IN, FIRST OUT.
Primeiro a entrar, primeiro a sair.
Conhecido também como Queue.
FILAS
5. ESTRUTURA DE DADOS – Prof. Thomás da Costa
Filas
Como funciona:
• Iniciar a fila.
• Verifica se a fila está vazia.
• Inserir um elemento no final da fila.
• Retirar um elemento no início da fila.
FILAS
6. ESTRUTURA DE DADOS – Prof. Thomás da Costa
Filas
struct alunos
{
char nome[100];
int idade;
alunos *proximo;
} *lista_alunos;
char nome[100];
int idade;
"Aluno 1"
20
alunos *proximo;
char nome[100];
int idade;
"Aluno 2"
21
alunos *proximo;
char nome[100];
int idade;
"Aluno 3"
23
alunos *proximo;
NULL
Estrutura “alunos”.
Próximo elemento da fila.
Primeiro elemento da fila.
Primeiro elemento a sair da fila.
FILAS
Elemento 1 Elemento 2 Elemento 3
7. ESTRUTURA DE DADOS – Prof. Thomás da Costa
Filas
Onde utilizamos:
• Servidor de fila de mensagem.
• Conhecido como MQ ou Message Queue.
• Trabalham com mensagens recebidas em uma fila que possuem um
destinatário.
• Utilizado principalmente em sistemas que precisam de alto processamento
de informações.
• Sites corporativos, bancos, e-commerce utilizam desse conceito.
• Existem vários fabricantes.
• IBM, Apache e Red Hat entre outros.
FILAS
8. ESTRUTURA DE DADOS – Prof. Thomás da Costa
Filas
Observações:
FILAS
• Utilizamos o algoritmo de lista.
• Podemos utilizar o algoritmo de lista encadeada, lista duplamente
encadeada e lista circular.
• Nos algoritmos, sempre inserimos um elemento no final.
• No algoritmo de fila, a remoção acontece no primeiro elemento.
• Em um algoritmo de lista podemos remover em qualquer posição.
• O código possui mais complexidade.
9. ESTRUTURA DE DADOS – Prof. Thomás da Costa
Filas
Operações:
• void iniciar_lista();
• int esta_vazio();
• void inserir_aluno();
• void listar_alunos();
• alunos *primeiro_elemento();
• void remover_aluno();
• void menu();
Vamos analisar as funções !!!
FILAS
10. ESTRUTURA DE DADOS – Prof. Thomás da Costa
void iniciar_lista()
{
lista_alunos = NULL;
}
Inicializando a lista com elemento vazio.
11. ESTRUTURA DE DADOS – Prof. Thomás da Costa
int esta_vazio()
{
system("cls");
int total;
if (lista_alunos == NULL)
total = 0;
else
{
alunos *p;
p = lista_alunos;
total = 1;
while (p->proximo != NULL)
{
p = p->proximo;
total++;
}
}
return total;
}
Retorna o total de elementos de uma lista.
Lista vazia.
12. ESTRUTURA DE DADOS – Prof. Thomás da Costa
void inserir_aluno()
{
system("cls");
limpar_teclado();
alunos *novo_aluno = new alunos;
cout << "Digite o nome do aluno:" << endl;
gets(novo_aluno->nome);
cout << "Digite a idade do aluno:" << endl;
cin >> novo_aluno->idade;
novo_aluno->proximo = NULL;
if (lista_alunos == NULL)
lista_alunos = novo_aluno;
else
{
alunos *p;
p = lista_alunos;
while (p->proximo != NULL)
p = p->proximo;
p->proximo = novo_aluno;
}
}
O mesmo algoritmo de lista encadeada !!!
13. ESTRUTURA DE DADOS – Prof. Thomás da Costa
void listar_alunos()
{
system("cls");
if (lista_alunos == NULL)
{
cout << "Nenhum aluno cadastrado." << endl;
cout << "Pressione uma tecla para continuar..." << endl;
getch();
return;
}
alunos *p;
p = lista_alunos;
if (p->proximo == NULL)
{
cout << "------------------------------------" << endl;
cout << "Nome do Aluno:" << p->nome << endl;
cout << "Idade do Aluno:" << p->idade << endl;
cout << "------------------------------------" << endl;
}
else
{
while (p != NULL)
{
cout << "------------------------------------" << endl;
cout << "Nome do Aluno:" << p->nome << endl;
cout << "Idade do Aluno:" << p->idade << endl;
cout << "------------------------------------" << endl;
p = p->proximo;
}
}
getch();
}
O mesmo algoritmo de lista encadeada !!!
14. ESTRUTURA DE DADOS – Prof. Thomás da Costa
alunos *primeiro_elemento()
{
return lista_alunos;
}
Retorna o primeiro elemento.
15. ESTRUTURA DE DADOS – Prof. Thomás da Costa
void remover_aluno()
{
alunos *p;
p = lista_alunos;
lista_alunos = lista_alunos->proximo;
delete p;
cout << "Aluno excluído com sucesso !!!" << endl;
getch();
}
Excluindo elemento da memória.
16. ESTRUTURA DE DADOS – Prof. Thomás da Costa
void menu()
{
system("cls");
cout << "1 - INSERIR ALUNOS" << endl;
cout << "2 - LISTAR ALUNOS" << endl;
cout << "3 - EXCLUIR ALUNOS" << endl;
cout << "4 - TAMANHO DA LISTA" << endl;
cout << "5 - PRIMEIRO ELEMENTO" << endl;
cout << "0 - SAIR" << endl;
cout << "Digite uma opção: ";
}
Novas opções de menu !!!
17. ESTRUTURA DE DADOS – Prof. Thomás da Costa
• Conceito utilizado no dia-a-dia.
• FIFO – First in, First Out.
• Primeiro elemento entra no final da fila.
• Aprimoramos o programa utilizado em lista para remover sempre o primeiro
elemento.
• A estrutura aponta para o primeiro elemento da lista. Com isso mantemos a
referência para o início da lista.
• Utilizado em servidores de filas conhecido como MQ.
Resumo
FILAS