Algoritmo de Pilha para Fila
15/05/2014
0
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
Curtir tópico
+ 0
Responder
Posts
19/05/2014
Joel Rodrigues
Opa, você precisa realmente desenvolver o algorítmo? Pois existem as classes Stack e Queue que usam esses conceitos de pilha e fila.
Responder
19/05/2014
Joel Rodrigues
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]
Responder
Clique aqui para fazer login e interagir na Comunidade :)