using System.Collections.Generic;
private List<T> stack = new List<T>();
private List<T> stackP = new List<T>();
private bool isEmpty = true;
private object top = null;
{ get { return isEmpty; } }
{ get { return count; } }
private void PushAuxiliar(List<T> st, T obj)
public void PushPrioritaire(T obj)
PushAuxiliar(stackP, obj);
PushAuxiliar(stack, obj);
public bool PrioritaireIsEmpty()
return stackP.Count == 0;
List<T> st = stackP.Count == 0 ? stack : stackP;
st.RemoveAt(st.Count - 1);
top = stackP.Count > 0 ? stackP[stackP.Count - 1] : stack[stack.Count - 1];
throw new InvalidOperationException();
throw new InvalidOperationException();
public static void Main()
Stack<int> s = new Stack<int>();
Console.WriteLine("Lista vazia: " + s.IsEmpty);
Console.WriteLine("Primeiro pop acerta no prioritario " + s.Pop());
Console.WriteLine("Os outros pops acertam nos normais " + s.Pop());
Console.WriteLine(s.Pop());