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: 1579 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:

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:

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

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

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



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