Estrutura de Dados - Aula 07

18
ANHANGUERA – 2015.2 ESTRUTURA DE DADOS AULA 07 – FILAS Prof. Thomás da Costa [email protected]

Transcript of Estrutura de Dados - Aula 07

Page 1: Estrutura de Dados - Aula 07

ANHANGUERA – 2015.2

ESTRUTURA DE DADOSAULA 07 – FILAS

Prof. Thomás da [email protected]

Page 2: Estrutura de Dados - Aula 07

ESTRUTURA DE DADOS – Prof. Thomás da Costa

FILAS

FILAS

Page 3: Estrutura de Dados - Aula 07

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Obrigado !!!

ANHANGUERA – 2015.2