Array
(
)

Algoritmo de Pilha para Fila

Alexandrino
   - 15 mai 2014

Pessoal, o algoritmo a seguir funciona certinho como pilha, eu preciso de um que funcione como fila, ou seja, que as inclusões sejam feitas no final e as exclusões no começo.
Por favor.
#Código
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class Pilha
{
private int[] valores;
private int topo;

public Pilha(int n) /* Método construtor */
{
if (n > 0)
{
valores = new int[n];
topo = -1;
}
}

public int Push(int valor) /* Método para empilhar */
{
if (topo < valores.Length - 1)
{
topo++;
valores[topo] = valor;
return 0;
}
return -1;
}

public int Pop() /* Método para desempilhar */
{
if (topo >= 0)
{
int valor = valores[topo];
topo--;
return valor;
}
else return -1; /* Stack Underflow */
}

public string ImprimirPilha() /* Método para imprimir a pilha */
{
string saida = "\t";
if (topo >= 0)
{
for (int i = topo; i >= 0; i--)
{
saida = saida + valores[i] + "\n\t";
}
return saida;
}
else return "\tPilha Vazia";
}
}

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Pilha pilha = new Pilha(5);
int sair = 0;
string imprime = "";
while (sair == 0)
{
imprimeOpcoes();
int opcao = int.Parse(Console.ReadLine());
if (opcao == 0)
{
sair = 1;
}
else
if (opcao == 1)
{
Console.Clear();
Console.WriteLine("Digite um numero para inserir na pilha\n");
pilha.Push(int.Parse(Console.ReadLine()));
imprime = pilha.ImprimirPilha();
Console.WriteLine(imprime);
}
else
if (opcao == 2)
{
Console.Clear();
pilha.Pop();
imprime = pilha.ImprimirPilha();
Console.WriteLine(imprime);
}
else
if (opcao == 3)
{
Console.Clear();
imprime = pilha.ImprimirPilha();
Console.WriteLine(imprime);
}
}
}
static public void imprimeOpcoes()
{
Console.WriteLine("\nEscolha uma opção:\n");
Console.WriteLine("Sair digite 0");
Console.WriteLine("Inserir na pilha digite 1");
Console.WriteLine("Tirar da pilha digite 2");
Console.WriteLine("Imprimir pilha digite 3\n");
}
}
}

Joel Rodrigues
   - 19 mai 2014

Opa, você precisa realmente desenvolver o algorítmo? Pois existem as classes Stack e Queue que usam esses conceitos de pilha e fila.

Joel Rodrigues
   - 19 mai 2014

Essas classes são explicadas neste artigo: Queue e Stack – Trabalhando com os modelos FIFO e LIFO em .NET