public void ResizingArrayStackTest()
        {
            var stack = new ResizingArrayStack <int>();

            stack.Push(1);
            stack.Push(2);

            Assert.IsTrue(stack.ItemCount == 2);
            Assert.IsTrue(stack.IsEmpty() == false);
            Assert.IsTrue(stack.Peek() == 2);
            Assert.IsTrue(stack.Pop() == 2);
            Assert.IsTrue(stack.ItemCount == 1);
            stack.Pop();
            Assert.IsTrue(stack.IsEmpty());

            for (int i = 0; i < 1000; i++)
            {
                stack.Push(i);
            }

            Assert.IsTrue(stack.ItemCount == 1000);

            for (int i = 0; i < 1000; i++)
            {
                stack.Pop();
            }

            Assert.IsTrue(stack.ItemCount == 0);
        }
예제 #2
0
 public void TestResizingStack() {
     var stack = new ResizingArrayStack<string>();
     stack.Push("Hello");
     stack.Push("World");
     stack.Push("how");
     stack.Push("are");
     stack.Push("you");
     foreach (var item in stack) {
         Console.WriteLine(item);
     }
 }
예제 #3
0
        public void TestResizingStack()
        {
            var stack = new ResizingArrayStack <string>();

            stack.Push("Hello");
            stack.Push("World");
            stack.Push("how");
            stack.Push("are");
            stack.Push("you");
            foreach (var item in stack)
            {
                Console.WriteLine(item);
            }
        }
예제 #4
0
        public void EnumeratingOnFixedStack()
        {
            var stack = new ResizingArrayStack <int>(1);

            stack.Push(10);
            stack.Push(15);
            stack.Push(20);
            stack.Push(30);
            stack.Push(40);

            var arr = stack.ToArray(); // because this uses the Enumerator

            Assert.AreEqual(new int[] { 40, 30, 20, 15, 10 }, arr);
        }
예제 #5
0
 public IEnumerable <int> PathTo(int v)
 {
     if (HasPathTo(v))
     {
         var path = new ResizingArrayStack <int>();
         for (int i = v; i != _s; i = _pathTo[i])
         {
             path.Push(i);
         }
         path.Push(_s);
         while (!path.IsEmpty())
         {
             yield return(path.Pop());
         }
     }
     ;
 }
        public void ToStringTest()
        {
            IStack <int> stack = new ResizingArrayStack <int>();

            for (int i = 0; i < 10; i++)
            {
                stack.Push(i);
            }
            Assert.AreEqual("9 8 7 6 5 4 3 2 1 0", stack.ToString());
        }
예제 #7
0
        private void transferContents(ResizingArrayStack <T> srcStack, ResizingArrayStack <T> destStack)
        {
            int size = srcStack.Size();

            for (int i = 0; i < size; i++)
            {
                destStack.Push(srcStack.Pop());
            }

            shouldTransfer = false;
        }
예제 #8
0
 public T Dequeue()
 {
     if (_outbox.IsEmpty())
     {
         while (!_inbox.IsEmpty())
         {
             _outbox.Push(_inbox.Pop());
         }
     }
     return(_outbox.Pop());
 }
예제 #9
0
        public void ResizingArrayStackTest2()
        {
            int[] input = { 3, 2, 4, 6, 9 };
            ResizingArrayStack <int> stack = new ResizingArrayStack <int>();

            stack.Push(3);
            Assert.AreEqual("3 ", IteratorToString(stack));
            stack.Push(4);

            Assert.AreEqual("4 3 ", IteratorToString(stack));
            Assert.AreEqual(4, stack.Pop());
            Assert.AreEqual(3, stack.Pop());
            Assert.AreEqual(0, stack.Count, "New stack has zero size");

            foreach (int i in input)
            {
                stack.Push(i);
            }
            Assert.AreEqual(input.Length, stack.Count);
            Assert.AreEqual("9 6 4 2 3 ", IteratorToString(stack));
        }
        public void ManyPushTest()
        {
            IStack <int> stack = new ResizingArrayStack <int>();

            for (int i = 0; i < 10; i++)
            {
                stack.Push(i);
                Assert.IsFalse(stack.IsEmpty());
                Assert.AreEqual(i + 1, stack.Size());
                Assert.AreEqual(i, stack.Peek());
            }
        }
예제 #11
0
        public void ResizingArrayStack_Positive()
        {
            var stack = new ResizingArrayStack <int>();

            Assert.IsTrue(stack.IsEmpty());
            stack.Push(1);
            stack.Push(3);
            stack.Push(5);
            stack.Push(7);
            stack.Push(9);
            Assert.AreEqual(5, stack.Size());
            Assert.AreEqual(9, stack.Peek());

            Assert.AreEqual(9, stack.Pop());
            Assert.AreEqual(7, stack.Pop());
            Assert.AreEqual(3, stack.Size());
            Assert.AreEqual(5, stack.Peek());

            stack.Push(66);
            var list = new List <int> {
                66, 5, 3, 1
            };
            int index = 0;

            foreach (var i in stack)
            {
                Assert.AreEqual(list[index++], i);
            }
        }
예제 #12
0
        public double Evaluate(string expression)
        {
            ResizingArrayStack <char>   ops  = new ResizingArrayStack <char>();
            ResizingArrayStack <double> vals = new ResizingArrayStack <double>();

            for (int i = 0; i < expression.Length; i++)
            {
                char currChar = expression[i];
                if (currChar == '(')
                {
                    ;
                }
                else if (currChar == '+')
                {
                    ops.Push(expression[i]);
                }
                else if (currChar == '*')
                {
                    ops.Push(expression[i]);
                }
                else if (currChar == ')')
                {
                    char op = ops.Pop();
                    if (op == '+')
                    {
                        vals.Push(vals.Pop() + vals.Pop());
                    }
                    else if (op == '*')
                    {
                        vals.Push(vals.Pop() * vals.Pop());
                    }
                }
                else
                {
                    vals.Push(Char.GetNumericValue(currChar));
                }
            }

            return(vals.Pop());
        }
        public void PushAndPopTest_ValueType()
        {
            IStack <int> stack = new ResizingArrayStack <int>();

            stack.Push(1);
            Assert.IsFalse(stack.IsEmpty());
            Assert.AreEqual(1, stack.Peek());
            Assert.AreEqual(1, stack.Size());
            int value = stack.Pop();

            Assert.IsTrue(stack.IsEmpty());
            Assert.AreEqual(0, stack.Size());
            Assert.AreEqual(1, value);
        }
예제 #14
0
        public override void Enqueue(T item)
        {
            size++;
            shouldTransfer = true;

            if (stack1.IsEmpty())
            {
                stack2.Push(item);
            }
            else
            {
                stack1.Push(item);
            }
        }
        public void PushAndPopTest_ReferenceType()
        {
            IStack <String> stack = new ResizingArrayStack <String>();

            stack.Push("1");
            Assert.IsFalse(stack.IsEmpty());
            Assert.AreEqual("1", stack.Peek());
            Assert.AreEqual(1, stack.Size());
            String value = stack.Pop();

            Assert.IsTrue(stack.IsEmpty());
            Assert.AreEqual(0, stack.Size());
            Assert.AreEqual("1", value);
        }
        public void ManyPopTest()
        {
            IStack <int> stack = new ResizingArrayStack <int>();

            for (int i = 0; i < 10; i++)
            {
                stack.Push(i);
            }
            for (int i = 0; i < 10; i++)
            {
                int value = stack.Pop();
                Assert.AreEqual(10 - i - 1, stack.Size());
                Assert.AreEqual(10 - i - 1, value);
            }
        }
예제 #17
0
        private bool MatchParens(string input)
        {
            var parens = new ResizingArrayStack <char>(1);

            foreach (var i in input)
            {
                switch (i)
                {
                case '[':
                case '(':
                case '{':
                    parens.Push(i);
                    break;

                case ']':
                    if (parens.IsEmpty() || parens.Pop() != '[')
                    {
                        return(false);
                    }
                    break;

                case ')':
                    if (parens.IsEmpty() || parens.Pop() != '(')
                    {
                        return(false);
                    }
                    break;

                case '}':
                    if (parens.IsEmpty() || parens.Pop() != '{')
                    {
                        return(false);
                    }
                    break;

                default:
                    break;
                }
            }
            return(true);
        }
예제 #18
0
        void StackTest()
        {
            var strArr = FileHandler.ReadFileAsStrArr("words3.txt");

            strArr.Show();
            var stack = new ResizingArrayStack <string>();

            //var stack = new NodeStack<string>();
            foreach (var item in strArr)
            {
                stack.Push(item);
            }
            foreach (var item in stack)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
            while (!stack.IsEmpty())
            {
                Console.Write(stack.Pop() + " ");
            }
            Console.ReadKey();
        }
        public bool Balanced(string input)
        {
            if (string.IsNullOrEmpty(input) || input.Length == 1)
            {
                return(false);
            }

            ResizingArrayStack <char> stack = new ResizingArrayStack <char>();

            for (int i = 0; i < input.Length; i++)
            {
                if (openingParenthesis(input[i]))
                {
                    stack.Push(input[i]);
                }

                if (closingParenthesis(input[i]) && !hasMatchingOpeningParenthesis(input[i], stack))
                {
                    return(false);
                }
            }

            return(stack.IsEmpty());
        }
예제 #20
0
 public void Enqueue(T item)
 {
     _inbox.Push(item);
 }
        public void PushTest_NullItem()
        {
            IStack <String> stack = new ResizingArrayStack <String>();

            stack.Push(null);
        }