SlideShare uma empresa Scribd logo
Prof. Adriano Teixeira de Souza
   Utilizaremos também uma lista simplesmente
    encadeada para tal.
   Como teremos que inserir e retirar elementos nas
    extremidades opostas da lista, que representarão o
    início e o fim da fila, teremos que usar dois ponteiros,
    ini e fim, que aprontam respectivamente para o primeiro
    e para o último elemento da fila.
                      ini   fim



info           info          info             info
  1              2             3                4

                              Prof. Adriano Teixeira de Souza
   O nó da lista para                A estrutura da fila
    armazenar valores reais            agrupa os ponteiros
    pode ser dado por:                 para o início e o fim da
                                       lista:
    typedef struct {                        typedef struct
     float info;                              {
     struct No* proximo;                      No* inicio;
    } No;                                     No* fim;
                                            } Fila ;


                              Prof. Adriano Teixeira de Souza
   A função cria aloca a estrutura da fila e inicializa
    a lista como sendo vazia.


Fila* cria (void)
{
  Fila* f = (Fila*) malloc(sizeof(Fila));
  f->inicio = f->fim = NULL;
  return f;
}




                            Prof. Adriano Teixeira de Souza
   Cada novo elemento é inserido no fim da lista e
    sempre retiramos o elemento do início da lista.
    Portanto, precisamos das funções:




                          Prof. Adriano Teixeira de Souza
/* função auxiliar: insere no fim */
No* ins_fim (No* fim, float v) {

   No* p = (No*) malloc(sizeof(No));
   p->info = v;
   p->proximo = NULL;
   if (fim != NULL) // verifica se a lista não estava vazia
      fim->proximo = p;
   return p;
}
/* função auxiliar: retira do início */
No* ret_ini (No* inicio) {
   No* p = inicio->proximo;
   free(inicio);
   return p;
}
   As funções que manipulam a fila fazem uso dessas
    funções de lista.
   Note que a função de inserção deve atualizar ambos os
    ponteiros, ini e fim, quanto da inserção do primeiro
    elemento:

void insere (Fila* f, float v)
{
   f->fim = ins_fim(f->fim,v);
   if (f->inicio == NULL) // fila antes vazia?
      f->inicio = f->fim;
}




                            Prof. Adriano Teixeira de Souza
   A função de retirar deve atualizar ambos os ponteiros
    (ini e fim) se a fila tornar-se vazia após a remoção do
    elemento.
     float retira (Fila* f) {
        float v;
        if (vazia(f)) {
           printf("Fila vazia.n");
           exit(1); // aborta programa
        }
        v = f->inicio->info;
        f->inicio = ret_ini(f->inicio);
        if (f->inicio == NULL) // fila ficou vazia?
           f->fim = NULL;
        return v;
     }

                              Prof. Adriano Teixeira de Souza
       A fila estará vazia se a lista estiver vazia:
         int vazia (Fila* f)
         {
            return (f->inicio == NULL);
         }

        A função que libera a fila deve antes liberar todos os elementos da
         lista.
          void libera (Fila* f) {
             No* q = f->inicio;
             while (q!=NULL) {
                 No* t = q->proximo;
                 free(q);
                 q = t;
             }
             free(f);
          }

                                          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 lista*/
    void imprime (Fila* f){
      No* q;
      for (q=f->inicio; q!=NULL; q=q->proximo){
           printf("%fn", q->info) ;
      }
    }




                             Prof. Adriano Teixeira de Souza
main(){

    Fila* f = cria();
    insere (f,20.0);
    insere (f,20.8);
    insere (f,20.2);
    insere (f,20.3);
    imprime (f);
    printf ("Primeiro elemento: %fn", retira(f));
    printf ("Segundo elemento: %fn", retira(f));
    printf ("Configuracao da fila:n");
    imprime (f);
    libera (f);

    system("pause");

}

Mais conteúdo relacionado

Mais procurados

Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
Helder da Rocha
 
Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Estrutura de Dados - Aula 09 - Listas Simplesmente EncadeadasEstrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Leinylson Fontinele
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Leinylson Fontinele
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
Fabrício Lopes Sanchez
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
Adriano Teixeira de Souza
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
Adriano Teixeira de Souza
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
Adriano Teixeira de Souza
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
Gustavo Carvalho
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Leinylson Fontinele
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
Patrick Silva
 
Árvore Binária
Árvore BináriaÁrvore Binária
Árvore Binária
Wagner Almeida
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
Ludimila Monjardim Casagrande
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na prática
Leinylson Fontinele
 
Heaps
HeapsHeaps
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
Leinylson Fontinele
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
Adriano Teixeira de Souza
 
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - Apresentação
Leinylson Fontinele
 
Listas duplamente encadeadas
Listas duplamente encadeadasListas duplamente encadeadas
Listas duplamente encadeadas
Jailson Torquato
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
Antonio Oliveira
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
Daniel Fernandes Costa
 

Mais procurados (20)

Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Estrutura de Dados - Aula 09 - Listas Simplesmente EncadeadasEstrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas Estáticas
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Árvore Binária
Árvore BináriaÁrvore Binária
Árvore Binária
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na prática
 
Heaps
HeapsHeaps
Heaps
 
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
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - Apresentação
 
Listas duplamente encadeadas
Listas duplamente encadeadasListas duplamente encadeadas
Listas duplamente encadeadas
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 

Destaque

Start-USP apresentação do sistema
Start-USP apresentação do sistemaStart-USP apresentação do sistema
Start-USP apresentação do sistema
Francisco Mat
 
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimentoDual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Pablo Silva
 
Joomla!Day Brasil 2008 - USP - Paulino Michelazzo
Joomla!Day Brasil 2008 - USP - Paulino MichelazzoJoomla!Day Brasil 2008 - USP - Paulino Michelazzo
Joomla!Day Brasil 2008 - USP - Paulino Michelazzo
Joomla!Day Brasil
 
Tipos Abstratos de Dados e Encapsulamento
Tipos Abstratos de Dados e EncapsulamentoTipos Abstratos de Dados e Encapsulamento
Tipos Abstratos de Dados e Encapsulamento
Helio Henrique L. C. Monte-Alto
 
Acesse E-books no acervo da USP
Acesse E-books no acervo da USPAcesse E-books no acervo da USP
Acesse E-books no acervo da USP
Universidade de São Paulo
 
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
 
Introdução à XML - Serviço de Biblioteca da EEFE-USP
Introdução à XML - Serviço de Biblioteca da EEFE-USPIntrodução à XML - Serviço de Biblioteca da EEFE-USP
Introdução à XML - Serviço de Biblioteca da EEFE-USP
Universidade de São Paulo
 
Structs em C
Structs em CStructs em C
Structs em C
Pablo Silva
 
Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em C
Pablo Silva
 

Destaque (9)

Start-USP apresentação do sistema
Start-USP apresentação do sistemaStart-USP apresentação do sistema
Start-USP apresentação do sistema
 
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimentoDual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
 
Joomla!Day Brasil 2008 - USP - Paulino Michelazzo
Joomla!Day Brasil 2008 - USP - Paulino MichelazzoJoomla!Day Brasil 2008 - USP - Paulino Michelazzo
Joomla!Day Brasil 2008 - USP - Paulino Michelazzo
 
Tipos Abstratos de Dados e Encapsulamento
Tipos Abstratos de Dados e EncapsulamentoTipos Abstratos de Dados e Encapsulamento
Tipos Abstratos de Dados e Encapsulamento
 
Acesse E-books no acervo da USP
Acesse E-books no acervo da USPAcesse E-books no acervo da USP
Acesse E-books no acervo da USP
 
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...
 
Introdução à XML - Serviço de Biblioteca da EEFE-USP
Introdução à XML - Serviço de Biblioteca da EEFE-USPIntrodução à XML - Serviço de Biblioteca da EEFE-USP
Introdução à XML - Serviço de Biblioteca da EEFE-USP
 
Structs em C
Structs em CStructs em C
Structs em C
 
Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em C
 

Semelhante a Estrutura de dados - Implementação de filas com listas

Filas encadeadas
Filas encadeadasFilas encadeadas
Filas encadeadas
Fabiana Lorenzi
 
Aula 10
Aula 10 Aula 10
Aula 10
Divani Barbosa
 
Listas Estáticas Encadeadas usando linguagem C
Listas Estáticas Encadeadas usando linguagem CListas Estáticas Encadeadas usando linguagem C
Listas Estáticas Encadeadas usando linguagem C
MarcosEvandroCintra
 
Listas em C
Listas em CListas em C
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
Sérgio Souza Costa
 
Lista duplamente encadeada
Lista duplamente encadeadaLista duplamente encadeada
Lista duplamente encadeada
Elaine Cecília Gatto
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
Ademar Trindade
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
Ademar Trindade
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.ppt
JoberthSilva
 
Lpiii dp-apostila
Lpiii dp-apostilaLpiii dp-apostila
Lpiii dp-apostila
Jonathan Henrique
 
Aula 9
Aula 9Aula 9
Pged 06
Pged 06Pged 06
Pged 06
samuelthiago
 
Aula 11
Aula 11Aula 11
Pilhas encadeadas
Pilhas encadeadasPilhas encadeadas
Pilhas encadeadas
Fabiana Lorenzi
 
Aula14
Aula14Aula14
Exercício de estrutura de dados 01
Exercício de estrutura de dados 01Exercício de estrutura de dados 01
Exercício de estrutura de dados 01
Patricia Diniz
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
Marco Mendes
 
Lista Encadeada: Inserção no Início
Lista Encadeada: Inserção no InícioLista Encadeada: Inserção no Início
Lista Encadeada: Inserção no Início
Elaine Cecília Gatto
 
Filas
FilasFilas
1 exercicio de vectores em C
1 exercicio de vectores em C1 exercicio de vectores em C
1 exercicio de vectores em C
Luis Borges Gouveia
 

Semelhante a Estrutura de dados - Implementação de filas com listas (20)

Filas encadeadas
Filas encadeadasFilas encadeadas
Filas encadeadas
 
Aula 10
Aula 10 Aula 10
Aula 10
 
Listas Estáticas Encadeadas usando linguagem C
Listas Estáticas Encadeadas usando linguagem CListas Estáticas Encadeadas usando linguagem C
Listas Estáticas Encadeadas usando linguagem C
 
Listas em C
Listas em CListas em C
Listas em C
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Lista duplamente encadeada
Lista duplamente encadeadaLista duplamente encadeada
Lista duplamente encadeada
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.ppt
 
Lpiii dp-apostila
Lpiii dp-apostilaLpiii dp-apostila
Lpiii dp-apostila
 
Aula 9
Aula 9Aula 9
Aula 9
 
Pged 06
Pged 06Pged 06
Pged 06
 
Aula 11
Aula 11Aula 11
Aula 11
 
Pilhas encadeadas
Pilhas encadeadasPilhas encadeadas
Pilhas encadeadas
 
Aula14
Aula14Aula14
Aula14
 
Exercício de estrutura de dados 01
Exercício de estrutura de dados 01Exercício de estrutura de dados 01
Exercício de estrutura de dados 01
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
Lista Encadeada: Inserção no Início
Lista Encadeada: Inserção no InícioLista Encadeada: Inserção no Início
Lista Encadeada: Inserção no Início
 
Filas
FilasFilas
Filas
 
1 exercicio de vectores em C
1 exercicio de vectores em C1 exercicio de vectores em C
1 exercicio de vectores em C
 

Mais de Adriano Teixeira de Souza

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 em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
Adriano Teixeira de Souza
 
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
 
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 (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
 
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
 
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)
Adriano Teixeira de Souza
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
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 - JMS
Adriano 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 Java
Adriano Teixeira de Souza
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
Adriano 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ções
Adriano 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 Controle
Adriano 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ção
Adriano 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 compostos
Adriano Teixeira de Souza
 

Mais de Adriano Teixeira de Souza (20)

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 em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
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)
 
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 (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 (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)
 
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)
 
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
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
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
 

Último

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 

Último (8)

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 

Estrutura de dados - Implementação de filas com listas

  • 2. Utilizaremos também uma lista simplesmente encadeada para tal.  Como teremos que inserir e retirar elementos nas extremidades opostas da lista, que representarão o início e o fim da fila, teremos que usar dois ponteiros, ini e fim, que aprontam respectivamente para o primeiro e para o último elemento da fila. ini fim info info info info 1 2 3 4 Prof. Adriano Teixeira de Souza
  • 3. O nó da lista para  A estrutura da fila armazenar valores reais agrupa os ponteiros pode ser dado por: para o início e o fim da lista: typedef struct { typedef struct float info; { struct No* proximo; No* inicio; } No; No* fim; } Fila ; Prof. Adriano Teixeira de Souza
  • 4. A função cria aloca a estrutura da fila e inicializa a lista como sendo vazia. Fila* cria (void) { Fila* f = (Fila*) malloc(sizeof(Fila)); f->inicio = f->fim = NULL; return f; } Prof. Adriano Teixeira de Souza
  • 5. Cada novo elemento é inserido no fim da lista e sempre retiramos o elemento do início da lista. Portanto, precisamos das funções: Prof. Adriano Teixeira de Souza
  • 6. /* função auxiliar: insere no fim */ No* ins_fim (No* fim, float v) { No* p = (No*) malloc(sizeof(No)); p->info = v; p->proximo = NULL; if (fim != NULL) // verifica se a lista não estava vazia fim->proximo = p; return p; } /* função auxiliar: retira do início */ No* ret_ini (No* inicio) { No* p = inicio->proximo; free(inicio); return p; }
  • 7. As funções que manipulam a fila fazem uso dessas funções de lista.  Note que a função de inserção deve atualizar ambos os ponteiros, ini e fim, quanto da inserção do primeiro elemento: void insere (Fila* f, float v) { f->fim = ins_fim(f->fim,v); if (f->inicio == NULL) // fila antes vazia? f->inicio = f->fim; } Prof. Adriano Teixeira de Souza
  • 8. A função de retirar deve atualizar ambos os ponteiros (ini e fim) se a fila tornar-se vazia após a remoção do elemento. float retira (Fila* f) { float v; if (vazia(f)) { printf("Fila vazia.n"); exit(1); // aborta programa } v = f->inicio->info; f->inicio = ret_ini(f->inicio); if (f->inicio == NULL) // fila ficou vazia? f->fim = NULL; return v; } Prof. Adriano Teixeira de Souza
  • 9. A fila estará vazia se a lista estiver vazia: int vazia (Fila* f) { return (f->inicio == NULL); }  A função que libera a fila deve antes liberar todos os elementos da lista. void libera (Fila* f) { No* q = f->inicio; while (q!=NULL) { No* t = q->proximo; free(q); q = t; } free(f); } Prof. Adriano Teixeira de Souza
  • 10. 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 lista*/ void imprime (Fila* f){ No* q; for (q=f->inicio; q!=NULL; q=q->proximo){ printf("%fn", q->info) ; } } Prof. Adriano Teixeira de Souza
  • 11. main(){ Fila* f = cria(); insere (f,20.0); insere (f,20.8); insere (f,20.2); insere (f,20.3); imprime (f); printf ("Primeiro elemento: %fn", retira(f)); printf ("Segundo elemento: %fn", retira(f)); printf ("Configuracao da fila:n"); imprime (f); libera (f); system("pause"); }