private static void RecursiveReverseInternalUtil(MyStack <int> myStack) { if (!myStack.IsEmpty()) { int data = myStack.Pop(); RecursiveReverseInternalUtil(myStack); AddDataAtBottom(myStack, data); } }
private static void AddDataAtBottom(MyStack <int> myStack, int data) { if (myStack.IsEmpty()) { myStack.Push(data); } else { int otherData = myStack.Pop(); AddDataAtBottom(myStack, data); myStack.Push(otherData); } }
static void Main(string[] args) { // FILO - first in, last out var stack = new MyStack(); stack.Push(10); stack.Push(20); stack.Push(30); var p = stack.Peek(); var a = stack.Pop(); var reversed = StringReverser("ruan"); var balanced = IsBalanced("(1 + 2)>"); }
public T Pop() { if (!valueStack.IsEmpty()) { T data = valueStack.Peek(); //Remove min if needed if (minStack.Peek().CompareTo(data) == 0) { minStack.Pop(); //discard top } //Remove max if needed if (maxStack.Peek().CompareTo(data) == 0) { maxStack.Pop(); //discard top } return(valueStack.Pop()); } return(default(T)); }