SlideShare uma empresa Scribd logo
1 de 18
ANHANGUERA – 2015.2
ESTRUTURA DE DADOS
AULA 07 – FILAS
Prof. Thomás da Costa
thomascosta@aedu.com
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.O
FIRST 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
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
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

Mais conteúdo relacionado

Mais procurados

Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06thomasdacosta
 
Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02thomasdacosta
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlex Camargo
 
Matlab – curso básico (1)
Matlab – curso básico (1)Matlab – curso básico (1)
Matlab – curso básico (1)Felipe Meganha
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Elaine Cecília Gatto
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Adriano Teixeira de Souza
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialFlávio Schuindt
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Ricardo Terra
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUACândido Sales Gomes
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsortFlávio Freitas
 
Apresentação sobre a linguagem lua
Apresentação sobre a linguagem luaApresentação sobre a linguagem lua
Apresentação sobre a linguagem luaRafael Sanches
 
Introducao ao Ruby
Introducao ao RubyIntroducao ao Ruby
Introducao ao RubyKlaus Paiva
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogoselliando dias
 

Mais procurados (19)

Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06
 
Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de strings
 
Matlab – curso básico (1)
Matlab – curso básico (1)Matlab – curso básico (1)
Matlab – curso básico (1)
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicial
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Estruturas
EstruturasEstruturas
Estruturas
 
Tutorial R
Tutorial RTutorial R
Tutorial R
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
 
Apresentação Lua
Apresentação LuaApresentação Lua
Apresentação Lua
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsort
 
Apresentação sobre a linguagem lua
Apresentação sobre a linguagem luaApresentação sobre a linguagem lua
Apresentação sobre a linguagem lua
 
Introducao ao Ruby
Introducao ao RubyIntroducao ao Ruby
Introducao ao Ruby
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogos
 
Linguagem lua
Linguagem luaLinguagem lua
Linguagem lua
 

Destaque

Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06thomasdacosta
 
Programação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código FonteProgramação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código Fontethomasdacosta
 
Programação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código FonteProgramação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código Fontethomasdacosta
 
Aula 02 Primeiro Cod Java
Aula 02   Primeiro Cod JavaAula 02   Primeiro Cod Java
Aula 02 Primeiro Cod JavaSergio Silva
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01thomasdacosta
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01thomasdacosta
 
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completothomasdacosta
 
LAB 01 - Programação Estruturada 2
LAB 01 - Programação Estruturada 2LAB 01 - Programação Estruturada 2
LAB 01 - Programação Estruturada 2thomasdacosta
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeRegis Magalhães
 

Destaque (15)

Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06
 
Programação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código FonteProgramação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código Fonte
 
Programação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código FonteProgramação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código Fonte
 
Aula 02 Primeiro Cod Java
Aula 02   Primeiro Cod JavaAula 02   Primeiro Cod Java
Aula 02 Primeiro Cod Java
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01
 
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completo
 
LAB 01 - Programação Estruturada 2
LAB 01 - Programação Estruturada 2LAB 01 - Programação Estruturada 2
LAB 01 - Programação Estruturada 2
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 Recursividade
 

Semelhante a Estrutura de Dados - Aula 07

Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03thomasdacosta
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STLMarcos Castro
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacoteManuel Menezes de Sequeira
 
Programação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código FonteProgramação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código Fontethomasdacosta
 
Minicurso-Python-01.pptx
Minicurso-Python-01.pptxMinicurso-Python-01.pptx
Minicurso-Python-01.pptxPapirusDig
 
Aula_05_-_Listas_Duplamente_Encadeadas.ppt
Aula_05_-_Listas_Duplamente_Encadeadas.pptAula_05_-_Listas_Duplamente_Encadeadas.ppt
Aula_05_-_Listas_Duplamente_Encadeadas.pptssuserd654cb1
 
Palestra python
Palestra pythonPalestra python
Palestra pythonRony Cruch
 
Aula_01_-_Pilhas_e_Filas_com_Vetores.ppt
Aula_01_-_Pilhas_e_Filas_com_Vetores.pptAula_01_-_Pilhas_e_Filas_com_Vetores.ppt
Aula_01_-_Pilhas_e_Filas_com_Vetores.pptssuserd654cb1
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasdiogoa21
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Alamo Saravali
 
Queues and Hook Functions
Queues and Hook FunctionsQueues and Hook Functions
Queues and Hook FunctionsMayara Mônica
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScriptCarlos Santos
 
Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz Esparsa
Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz EsparsaEstrutura de dados - Lista Circular Duplamente Encadeada e Matriz Esparsa
Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz EsparsaLucas Sabadini
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonGiancarlo Silva
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 

Semelhante a Estrutura de Dados - Aula 07 (20)

Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Programação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código FonteProgramação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código Fonte
 
Minicurso-Python-01.pptx
Minicurso-Python-01.pptxMinicurso-Python-01.pptx
Minicurso-Python-01.pptx
 
Aula_05_-_Listas_Duplamente_Encadeadas.ppt
Aula_05_-_Listas_Duplamente_Encadeadas.pptAula_05_-_Listas_Duplamente_Encadeadas.ppt
Aula_05_-_Listas_Duplamente_Encadeadas.ppt
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Palestra python
Palestra pythonPalestra python
Palestra python
 
Aula03 Filas
Aula03   FilasAula03   Filas
Aula03 Filas
 
Aula_01_-_Pilhas_e_Filas_com_Vetores.ppt
Aula_01_-_Pilhas_e_Filas_com_Vetores.pptAula_01_-_Pilhas_e_Filas_com_Vetores.ppt
Aula_01_-_Pilhas_e_Filas_com_Vetores.ppt
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicas
 
Slides pilhas e_filas
Slides  pilhas e_filasSlides  pilhas e_filas
Slides pilhas e_filas
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1
 
Queues and Hook Functions
Queues and Hook FunctionsQueues and Hook Functions
Queues and Hook Functions
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz Esparsa
Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz EsparsaEstrutura de dados - Lista Circular Duplamente Encadeada e Matriz Esparsa
Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz Esparsa
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 

Mais de thomasdacosta

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01thomasdacosta
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02thomasdacosta
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03thomasdacosta
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06thomasdacosta
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05thomasdacosta
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07thomasdacosta
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06thomasdacosta
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04thomasdacosta
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05thomasdacosta
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03thomasdacosta
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04thomasdacosta
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03thomasdacosta
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03thomasdacosta
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02thomasdacosta
 
Programação Concorrente - LAB 01
Programação Concorrente - LAB 01Programação Concorrente - LAB 01
Programação Concorrente - LAB 01thomasdacosta
 

Mais de thomasdacosta (20)

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 
Programação Concorrente - LAB 01
Programação Concorrente - LAB 01Programação Concorrente - LAB 01
Programação Concorrente - LAB 01
 

Estrutura de Dados - Aula 07

  • 1. ANHANGUERA – 2015.2 ESTRUTURA DE DADOS AULA 07 – FILAS Prof. Thomás da Costa thomascosta@aedu.com
  • 2. ESTRUTURA DE DADOS – Prof. Thomás da Costa FILAS FILAS
  • 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