using System;
using System.Collections;
class Trabalho{
static void imprime (IEnumerable mPilha){ //imprime valores
foreach(Object obj in mPilha) //para cada objeto dentro da pilha...
Console.Write(" {0} ,", obj); //mostrar em tela
}
static void vazia (Stack mPilha){ //checa existencia de valores dentro da pilha
if(mPilha.Count >= 1){ //maior ou igual a 1
Console.Write("Pilha preenchida.\n");
}else{ //hipotese default sendo 0
Console.Write("Pilha vazia.\n");
}
}
public static void Main() {
// - PILHA -
// Uma estrutura de pilha é fácilmente analisada em relação ao seu contraparte de mesmo nome na vida real
// Uma pilha de coisas é melhor adicionada/removida uma por uma, LIFO = Último a entrar, primeiro a sair
// No código foi colocado 4 objetos de texto e demonstrados sua posição, logo após o objeto no topo (Impressora) foi retirado via .Pop
// A pilha tem valor de big O(1) se for fazer uma ação de >push ou >pop enquanto uma com loop, como >imprime seria O(n)
Stack mPilha = new Stack(); //Cria classe do tipo Stack de acordo com System.Collections;
vazia(mPilha);
mPilha.Push("Unisagrado"); //Primeiro objeto da pilha, fica na base dela
mPilha.Push("Curso");
mPilha.Push("Computador");
mPilha.Push("Impressora"); //Último objeto da pilha, ficando no seu topo
Console.WriteLine("Quantidade de objetos:{0}",mPilha.Count);
vazia(mPilha);
Console.Write("Valores a partir do topo:");
imprime(mPilha);
mPilha.Pop(); //Retira o objeto no topo da pilha
Console.Write("\nValores a partir do topo:");
imprime(mPilha);
}
}