コード例 #1
0
 private static void RecursiveReverseInternalUtil(MyStack <int> myStack)
 {
     if (!myStack.IsEmpty())
     {
         int data = myStack.Pop();
         RecursiveReverseInternalUtil(myStack);
         AddDataAtBottom(myStack, data);
     }
 }
コード例 #2
0
 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);
     }
 }
コード例 #3
0
        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)>");
        }
コード例 #4
0
        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));
        }