estrutura de dados - aula 07
TRANSCRIPT
ESTRUTURA DE DADOS – Prof. Thomás da Costa
FILAS
FILAS
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
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
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
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
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
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.
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
ESTRUTURA DE DADOS – Prof. Thomás da Costa
void iniciar_lista()
{
lista_alunos = NULL;
}
Inicializando a lista com elemento vazio.
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.
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 !!!
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 !!!
ESTRUTURA DE DADOS – Prof. Thomás da Costa
alunos *primeiro_elemento()
{
return lista_alunos;
}
Retorna o primeiro elemento.
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.
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 !!!
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
Obrigado !!!
ANHANGUERA – 2015.2