estrutura de dados - aula 07
TRANSCRIPT
![Page 2: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/2.jpg)
ESTRUTURA DE DADOS – Prof. Thomás da Costa
FILAS
FILAS
![Page 3: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/3.jpg)
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
![Page 4: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/4.jpg)
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Filas
Conceitos:
F.I.F.OFIRST IN, FIRST OUT.
Primeiro a entrar, primeiro a sair.Conhecido também como Queue.
FILAS
![Page 5: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/5.jpg)
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
![Page 6: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/6.jpg)
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Filasstruct 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
![Page 7: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/7.jpg)
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
![Page 8: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/8.jpg)
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.
![Page 9: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/9.jpg)
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
![Page 10: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/10.jpg)
ESTRUTURA DE DADOS – Prof. Thomás da Costa
void iniciar_lista()
{
lista_alunos = NULL;
}
Inicializando a lista com elemento vazio.
![Page 11: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/11.jpg)
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.
![Page 12: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/12.jpg)
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 !!!
![Page 13: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/13.jpg)
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 !!!
![Page 14: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/14.jpg)
ESTRUTURA DE DADOS – Prof. Thomás da Costa
alunos *primeiro_elemento()
{
return lista_alunos;
}
Retorna o primeiro elemento.
![Page 15: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/15.jpg)
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.
![Page 16: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/16.jpg)
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 !!!
![Page 17: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/17.jpg)
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
![Page 18: Estrutura de Dados - Aula 07](https://reader030.vdocuments.site/reader030/viewer/2022020301/5a679c5e7f8b9a360c8b57f5/html5/thumbnails/18.jpg)
Obrigado !!!
ANHANGUERA – 2015.2