Você está aqui: C# ::: Estruturas de Dados ::: Filas

Como criar uma fila em C# usando um vetor de ints - Estruturas de Dados em C#

Quantidade de visualizações: 1109 vezes
A Fila é uma estrutura de dados do tipo FIFO - First-In, First-Out (Primeiro a entrar, primeiro a sair). Neste tipo de estrutura, o primeiro elemento a ser inserido é o primeiro a ser removido. Funciona exatamente igual a fila de um banco, fila para comprar ingressos, fila para pagar no caixa da lanchonete, etc.

Veja a imagem a seguir:



Embora seja mais comum a criação de uma estrutura de dados do tipo Fila de forma dinâmica (usando ponteiros e referências), nesta dica eu mostrarei como podemos criá-la em C# usando um array, ou seja, um vetor. No exemplo eu usei inteiros, mas você pode modificar para o tipo de dados que você achar mais adequado.

Veja o código completo para uma classe Fila usando um vetor de ints. Veja que o tamanho do vetor é informado no construtor da classe. Note também a lógica empregada na construção dos métodos enfileirar(), desenfileirar() e imprimirFila():

Código para Fila.cs:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

using System;

namespace Estudos {
  class Fila {
    private int[] elementos;
    private int inicio; // início da fila
    private int final; // fim da fila
    private int maximo; // quantidade máxima de elementos na fila

    // construtor da Fila que aceita o tamanho
    public Fila(int tamanho) {
      // constrói o vetor com o tamanho informado
      this.elementos = new int[tamanho];
      this.inicio = 0; // define o início como sendo o primeiro elemento
      this.final = -1; // fila vazia. Não tem final ainda
      this.maximo = tamanho; // ajusta a quantidade máxima de elementos
    }

    // método que permite enfileirar um novo elemento
    public void enfileirar(int item) {
      // a fila já está cheia
      if (this.final == (this.maximo - 1)) {
        Console.WriteLine("\nA fila está cheia.\n");
        return;
      }
      // ainda há espaço na fila
      else {
        this.elementos[++this.final] = item;
      }
    }

    // método que permite desenfileirar e retornar
    // o elemento no início da fila
    public int desenfileirar() {
      // a fila está vazia
      if (this.inicio == (this.final + 1)) {
        Console.WriteLine("\nA fila está vazia.\n");
        return -1;
      }
      // retorna o elemento desenfileirado
      else {
        Console.WriteLine("Elemento desenfileirado: " + 
          this.elementos[this.inicio]);
        return this.elementos[this.inicio++];
      }
    }

    // exibe os elementos da fila
    public void exibirFila() {
      // a fila está vazia
      if (this.inicio == (this.final + 1)) {
        Console.WriteLine("\nA fila está vazia.\n");
        return;
      }
      else {
        for (int i = this.inicio; i <= this.final; i++) {
          Console.WriteLine("Item[" + (i + 1) + "]: " +
            this.elementos[i]);
        }
      }
    }
  }
}

Veja agora o código para a classe principal, ou seja, a classe Principal usada para testar a funcionalidade da nossa fila:

Código para Principal.cs:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

using System;

namespace Estudos {
  class Principal {
    static void Main(string[] args) {
      // Vamos criar uma nova fila com espaço para 5 elementos
      Fila fila = new Fila(5);

      // vamos inserir 3 elementos na fila
      fila.enfileirar(34);
      fila.enfileirar(27);
      fila.enfileirar(11);

      // vamos imprimir a fila
      Console.WriteLine("Os itens na fila são: ");
      fila.exibirFila();

      // vamos desenfileirar dois itens
      Console.WriteLine();
      fila.desenfileirar();
      fila.desenfileirar();

      // vamos imprimir a fila novamente
      Console.WriteLine("\nOs itens na fila são: ");
      fila.exibirFila();

      Console.WriteLine("Pressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

Ao executar este código C# nós teremos o seguinte resultado:

Os itens na fila são:
Item[1]: 34
Item[2]: 27
Item[3]: 11

Elemento desenfileirado: 34
Elemento desenfileirado: 27

Os itens na fila são:
Item[3]: 11

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de C#

Veja mais Dicas e truques de C#

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2023 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 23 usuários muito felizes estudando em nosso site.