SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Filas

Prof. Adriano Teixeira de Souza
   São listas lineares que adotam a política FIFO (First
    In First Out – o primeiro que entra é o primeiro que
    sai) para a manipulação de elementos.

   As inserções são feitas no final da fila.

   As remoções são feitas no início da fila.

   A consulta na fila é feita desenfileirando elemento
    a elemento até encontrar o elemento desejado ou
    chegar ao final da fila.
   Alocação de recursos para impressão de
    documentos em uma impressora (spooler de
    impressão).
   Atendimento de processos requisitados ao
    um sistema operacional.
   Ordenação do encaminhamento dos pacotes
    em um roteador.
   Buffer para gravação de dados em mídia.
fila para pouso




fila para decolagem
x   m       k



        a



a   x       m   k



        b



b   a       x   m   k
b   a   x       m   k



            k



    b   a       x   m



            m



        b       a   x
x   m   k




a   a   x   m   k




b   b   a   x   m
   Criação
   Destruição
   Inserção de um elemento
   Remoção de um elemento
   Localização de um elemento para consulta ou
    alteração
   Ordenação de uma lista
   Intercalação de duas listas
   Concatenação de duas listas
   Divisão de uma lista em duas
   Para isso devemos fixar o número máximo N
    de elementos na fila.
   Note que o processo de inserção e remoção
    em extremidades opostas fará com que a fila
    “ande” no vetor.
   Exemplo: se inserirmos os elementos
    1.4, 2.2, 3.5, 4.0 e depois retirarmos dois
    elementos, a fila não estará mais nas
    posições iniciais do vetor.




                        Prof. Adriano Teixeira de Souza
0     1     2            3             4            5
1.4   2.2   3.5         4.0                          ...
ini                                   fim




 0     1     2             3            4             5
            3.5          4.0                         ...
             ini                       fim




                   Prof. Adriano Teixeira de Souza
   Observamos que em dado instante, a parte
    ocupada do vetor pode chegar à última
    posição.
   Para reaproveitar as primeiras posições livres
    do vetor sem implementarmos uma re-
    arrumação trabalhosa dos elementos,
    podemos incrementar as posições do vetor
    de forma “circular”: se o último elemento
    ocupa a última posição do vetor, inserimos os
    novos elementos a partir do início do vetor.



                         Prof. Adriano Teixeira de Souza
   Desta forma, em um dado momento, poderíamos ter
    quatro elementos, 20.0, 20.8, 21.2 e 24.3, distribuídos
    dois no fim e dois no início do vetor.




       0         1                                   98            99
     21.2      24.3       ...          ...        20.0            20.8
                          fim                        ini




                                Prof. Adriano Teixeira de Souza
   Para essa implementação, os índices do vetor
    são incrementados de maneira que seus
    valores progridam “circularmente”.
   Desta forma, se temos 100 posições no
    vetor, os valores dos índices assumem os
    seguintes valores:

   0, 1, 2, 3, ..., 98, 99, 0, 1, 2, 3, ..., 98, 99, 0, 1, ...




                                Prof. Adriano Teixeira de Souza
   Função auxiliar responsável por incrementar o valor de
    um índice.
   Esta função recebe o valor do índice atual e fornece
    com valor de retorno o índice incrementado, usando o
    incremento circular.
               int incr (int i) {
                     if (i == Fila.MAX - 1)
                           return 0;
                     else
                           return i+1;
               }
Ou, dispensando a função: i=(i+1)%N;




                                   Prof. Adriano Teixeira de Souza
   Podemos declarar uma estrutura tipo fila como sendo
    uma estrutura com três componentes:
    ◦ Um vetor vet de tamanho N,
    ◦ Um índice ini para o início da fila
    ◦ Um índice fim para o fim da fila
   Onde,
    ◦ ini marca a posição do próximo elemento a ser retirado da fila;
    ◦ fim marca a posição (vazia), onde será inserido o próximo
      elemento

   Desta forma a fila vazia se dá ini == fim e a fila cheia se
    caracteriza por ter fim e ini em posições consecutivas
    (circularmente): incr(fim) == ini.

                                     Prof. Adriano Teixeira de Souza
   A estrutura fila pode ser dada por:

public class Fila {

    static final int MAX = 10;

    private int inicio=0, fim=0 ;
    private float vet[] = new float[MAX];

}
                                     • Código para nova fila:

                                     Fila f = new Fila();



                                 Prof. Adriano Teixeira de Souza
   Para inserir um elemento na fila, usamos a
    próxima posição livre do vetor, indicada por fim.
    Devemos verificar se há espaço para a inserção
    de um novo elemento (utilizamos vetor)
    void insere (Fila f, float v)
    {
      if (incr(f.fim) == f.inicio){ // fila cheia
        System.out.println("Capacidade da fila estourou");
        System.exit(1); //aborta o programa
      }
      // insere elemento na próxima posição livre
      f.vet[f.fim] = v;
      f.fim = incr(f.fim);
    }


                             Prof. Adriano Teixeira de Souza
   A função para retirar o elemento no início da fila
    fornece o valor do elemento retirado como
    retorno. Verifica-se antes se a fila está ou não
    vazia:
    float retira (Fila f) {
           float v;
           if (vazia(f)) {
                  System.out.println("Fila vazia.n");
                  System.exit(1); // aborta programa
           }
           //retira elemento no inicio
           v = f.vet[f.inicio];
           f.inicio = incr(f.inicio);
           return v;
    }

                              Prof. Adriano Teixeira de Souza
       A função que verifica se a pilha está vazia pode ser dada por:

         boolean vazia (Fila f)
         {
         return (f.inicio == f.fim);
         }


        Finalmente, o código para liberar a memória alocada pela fila:


         f = null;




                                       Prof. Adriano Teixeira de Souza
   Para testar o código, pode ser útil implementarmos
    um função que imprima os valores armazenados na
    fila. A ordem de impressão adotada é do início para
    o fim.

    //versão com vetor
    void imprime (Fila f){
       int i;
       for (i=f.inicio; i!=f.fim; i=incr(i)){
         System.out.println(f.vet[i]);
       }
    }



                           Prof. Adriano Teixeira de Souza
public static void main(String[] args){

    Fila f = new Fila();
    f.insere(f,20.0f);
    f.insere(f,20.8f);
    f.insere(f,20.2f);
    f.insere(f,20.3f);
    f.imprime (f);
    System.out.println("n Primeiro elemento: "+f.retira(f));
    System.out.println("n Segundo elemento: "+ f.retira(f));
    System.out.println("n Configuracao da fila:");
    f.imprime (f);
    f = null;
}

Mais conteúdo relacionado

Mais procurados

Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
 
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaExercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaLoiane Groner
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasLeinylson Fontinele
 
Operações em Árvores Binárias
Operações em Árvores BináriasOperações em Árvores Binárias
Operações em Árvores Bináriaselliando dias
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHASAparicio Junior
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Gercélia Ramos
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Listas duplamente encadeadas
Listas duplamente encadeadasListas duplamente encadeadas
Listas duplamente encadeadasJailson Torquato
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao PythonMarcio Palheta
 

Mais procurados (20)

Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Aula sobre Tabela Hash
Aula sobre Tabela HashAula sobre Tabela Hash
Aula sobre Tabela Hash
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaExercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Pilhas e Filas
Pilhas e FilasPilhas e Filas
Pilhas e Filas
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas Estáticas
 
Operações em Árvores Binárias
Operações em Árvores BináriasOperações em Árvores Binárias
Operações em Árvores Binárias
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
JAVA - Matrizes
JAVA - MatrizesJAVA - Matrizes
JAVA - Matrizes
 
Listas duplamente encadeadas
Listas duplamente encadeadasListas duplamente encadeadas
Listas duplamente encadeadas
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Bubble Sort
Bubble SortBubble Sort
Bubble Sort
 

Destaque

Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasAdriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
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
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Natanael Fonseca
 
Java orientação a objetos (introdução)
Java   orientação a objetos (introdução)Java   orientação a objetos (introdução)
Java orientação a objetos (introdução)Armando Daniel
 

Destaque (17)

Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Tipos Abstratos de Dados e Encapsulamento
Tipos Abstratos de Dados e EncapsulamentoTipos Abstratos de Dados e Encapsulamento
Tipos Abstratos de Dados e Encapsulamento
 
Estruturas de dados
Estruturas de dadosEstruturas de dados
Estruturas de dados
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listas
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
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)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
 
Certificacao Java
Certificacao JavaCertificacao Java
Certificacao Java
 
Java orientação a objetos (introdução)
Java   orientação a objetos (introdução)Java   orientação a objetos (introdução)
Java orientação a objetos (introdução)
 
Pged 06
Pged 06Pged 06
Pged 06
 

Semelhante a Estrutura de dados em Java - Filas

Semelhante a Estrutura de dados em Java - Filas (20)

Aula 10
Aula 10 Aula 10
Aula 10
 
7 alocacao sequencial - filas
7   alocacao sequencial - filas7   alocacao sequencial - filas
7 alocacao sequencial - filas
 
Aula 9
Aula 9Aula 9
Aula 9
 
Aula 7
Aula 7 Aula 7
Aula 7
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.ppt
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton Yagami
 
14 algoritmos de classificacao de tabelas
14   algoritmos de classificacao de tabelas14   algoritmos de classificacao de tabelas
14 algoritmos de classificacao de tabelas
 
ESTRUTURA DE DADOS (JAVA) AULA 09
ESTRUTURA DE DADOS (JAVA) AULA 09ESTRUTURA DE DADOS (JAVA) AULA 09
ESTRUTURA DE DADOS (JAVA) AULA 09
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
 
Estruturas
EstruturasEstruturas
Estruturas
 
Apostila rpira
Apostila rpiraApostila rpira
Apostila rpira
 
Lpiii dp-apostila
Lpiii dp-apostilaLpiii dp-apostila
Lpiii dp-apostila
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Java8
Java8Java8
Java8
 
Aula 11
Aula 11Aula 11
Aula 11
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Java
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetos
 
Texto aedii_modii_unid23_python
 Texto aedii_modii_unid23_python Texto aedii_modii_unid23_python
Texto aedii_modii_unid23_python
 
19_vetores.pdf
19_vetores.pdf19_vetores.pdf
19_vetores.pdf
 

Mais de Adriano Teixeira de Souza

Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosParadigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CAdriano Teixeira de Souza
 

Mais de Adriano Teixeira de Souza (17)

Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de Exceções
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosParadigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
 

Último

Knowtree - Extração de Dados com o KAPE.
Knowtree - Extração de Dados com o KAPE.Knowtree - Extração de Dados com o KAPE.
Knowtree - Extração de Dados com o KAPE.Thiago lindolfo
 
TI EXAMES - NIST Cybersecurity Framework.pdf
TI EXAMES - NIST Cybersecurity Framework.pdfTI EXAMES - NIST Cybersecurity Framework.pdf
TI EXAMES - NIST Cybersecurity Framework.pdfRodrigoMori7
 
O papel da automação de processos no mundo do trabalho pós-moderno
O papel da automação de processos no mundo do trabalho pós-modernoO papel da automação de processos no mundo do trabalho pós-moderno
O papel da automação de processos no mundo do trabalho pós-modernoDenis Pereira Raymundo
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...Priscila Ribeiro Chagas
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 

Último (7)

Knowtree - Extração de Dados com o KAPE.
Knowtree - Extração de Dados com o KAPE.Knowtree - Extração de Dados com o KAPE.
Knowtree - Extração de Dados com o KAPE.
 
TI EXAMES - NIST Cybersecurity Framework.pdf
TI EXAMES - NIST Cybersecurity Framework.pdfTI EXAMES - NIST Cybersecurity Framework.pdf
TI EXAMES - NIST Cybersecurity Framework.pdf
 
O papel da automação de processos no mundo do trabalho pós-moderno
O papel da automação de processos no mundo do trabalho pós-modernoO papel da automação de processos no mundo do trabalho pós-moderno
O papel da automação de processos no mundo do trabalho pós-moderno
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 

Estrutura de dados em Java - Filas

  • 2. São listas lineares que adotam a política FIFO (First In First Out – o primeiro que entra é o primeiro que sai) para a manipulação de elementos.  As inserções são feitas no final da fila.  As remoções são feitas no início da fila.  A consulta na fila é feita desenfileirando elemento a elemento até encontrar o elemento desejado ou chegar ao final da fila.
  • 3. Alocação de recursos para impressão de documentos em uma impressora (spooler de impressão).  Atendimento de processos requisitados ao um sistema operacional.  Ordenação do encaminhamento dos pacotes em um roteador.  Buffer para gravação de dados em mídia.
  • 4. fila para pouso fila para decolagem
  • 5. x m k a a x m k b b a x m k
  • 6. b a x m k k b a x m m b a x
  • 7. x m k a a x m k b b a x m
  • 8. Criação  Destruição  Inserção de um elemento  Remoção de um elemento  Localização de um elemento para consulta ou alteração  Ordenação de uma lista  Intercalação de duas listas  Concatenação de duas listas  Divisão de uma lista em duas
  • 9. Para isso devemos fixar o número máximo N de elementos na fila.  Note que o processo de inserção e remoção em extremidades opostas fará com que a fila “ande” no vetor.  Exemplo: se inserirmos os elementos 1.4, 2.2, 3.5, 4.0 e depois retirarmos dois elementos, a fila não estará mais nas posições iniciais do vetor. Prof. Adriano Teixeira de Souza
  • 10. 0 1 2 3 4 5 1.4 2.2 3.5 4.0 ... ini fim 0 1 2 3 4 5 3.5 4.0 ... ini fim Prof. Adriano Teixeira de Souza
  • 11. Observamos que em dado instante, a parte ocupada do vetor pode chegar à última posição.  Para reaproveitar as primeiras posições livres do vetor sem implementarmos uma re- arrumação trabalhosa dos elementos, podemos incrementar as posições do vetor de forma “circular”: se o último elemento ocupa a última posição do vetor, inserimos os novos elementos a partir do início do vetor. Prof. Adriano Teixeira de Souza
  • 12. Desta forma, em um dado momento, poderíamos ter quatro elementos, 20.0, 20.8, 21.2 e 24.3, distribuídos dois no fim e dois no início do vetor. 0 1 98 99 21.2 24.3 ... ... 20.0 20.8 fim ini Prof. Adriano Teixeira de Souza
  • 13. Para essa implementação, os índices do vetor são incrementados de maneira que seus valores progridam “circularmente”.  Desta forma, se temos 100 posições no vetor, os valores dos índices assumem os seguintes valores:  0, 1, 2, 3, ..., 98, 99, 0, 1, 2, 3, ..., 98, 99, 0, 1, ... Prof. Adriano Teixeira de Souza
  • 14. Função auxiliar responsável por incrementar o valor de um índice.  Esta função recebe o valor do índice atual e fornece com valor de retorno o índice incrementado, usando o incremento circular. int incr (int i) { if (i == Fila.MAX - 1) return 0; else return i+1; } Ou, dispensando a função: i=(i+1)%N; Prof. Adriano Teixeira de Souza
  • 15. Podemos declarar uma estrutura tipo fila como sendo uma estrutura com três componentes: ◦ Um vetor vet de tamanho N, ◦ Um índice ini para o início da fila ◦ Um índice fim para o fim da fila  Onde, ◦ ini marca a posição do próximo elemento a ser retirado da fila; ◦ fim marca a posição (vazia), onde será inserido o próximo elemento  Desta forma a fila vazia se dá ini == fim e a fila cheia se caracteriza por ter fim e ini em posições consecutivas (circularmente): incr(fim) == ini. Prof. Adriano Teixeira de Souza
  • 16. A estrutura fila pode ser dada por: public class Fila { static final int MAX = 10; private int inicio=0, fim=0 ; private float vet[] = new float[MAX]; } • Código para nova fila: Fila f = new Fila(); Prof. Adriano Teixeira de Souza
  • 17. Para inserir um elemento na fila, usamos a próxima posição livre do vetor, indicada por fim. Devemos verificar se há espaço para a inserção de um novo elemento (utilizamos vetor) void insere (Fila f, float v) { if (incr(f.fim) == f.inicio){ // fila cheia System.out.println("Capacidade da fila estourou"); System.exit(1); //aborta o programa } // insere elemento na próxima posição livre f.vet[f.fim] = v; f.fim = incr(f.fim); } Prof. Adriano Teixeira de Souza
  • 18. A função para retirar o elemento no início da fila fornece o valor do elemento retirado como retorno. Verifica-se antes se a fila está ou não vazia: float retira (Fila f) { float v; if (vazia(f)) { System.out.println("Fila vazia.n"); System.exit(1); // aborta programa } //retira elemento no inicio v = f.vet[f.inicio]; f.inicio = incr(f.inicio); return v; } Prof. Adriano Teixeira de Souza
  • 19. A função que verifica se a pilha está vazia pode ser dada por: boolean vazia (Fila f) { return (f.inicio == f.fim); }  Finalmente, o código para liberar a memória alocada pela fila: f = null; Prof. Adriano Teixeira de Souza
  • 20. Para testar o código, pode ser útil implementarmos um função que imprima os valores armazenados na fila. A ordem de impressão adotada é do início para o fim. //versão com vetor void imprime (Fila f){ int i; for (i=f.inicio; i!=f.fim; i=incr(i)){ System.out.println(f.vet[i]); } } Prof. Adriano Teixeira de Souza
  • 21. public static void main(String[] args){ Fila f = new Fila(); f.insere(f,20.0f); f.insere(f,20.8f); f.insere(f,20.2f); f.insere(f,20.3f); f.imprime (f); System.out.println("n Primeiro elemento: "+f.retira(f)); System.out.println("n Segundo elemento: "+ f.retira(f)); System.out.println("n Configuracao da fila:"); f.imprime (f); f = null; }