Algoritmo de Pilha para Fila
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.
Por favor.
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");
}
}
}
Alexandrino
Curtidas 0
Respostas
Joel Rodrigues
15/05/2014
Opa, você precisa realmente desenvolver o algorítmo? Pois existem as classes Stack e Queue que usam esses conceitos de pilha e fila.
GOSTEI 0
Joel Rodrigues
15/05/2014
Essas classes são explicadas neste artigo: [url:descricao=Queue e Stack – Trabalhando com os modelos FIFO e LIFO em .NET]https://www.devmedia.com.br/queue-e-stack-trabalhando-com-os-modelos-fifo-e-lifo-em-net/25579[/url]
GOSTEI 0