public void ShouldConvertInfixToPostFix()
        {
            InfixToPostFix obj      = new InfixToPostFix();
            string         input    = "a+b*(c^d-e)^(f+g*h)-i";
            string         expected = "abcd^e-fgh*+^*+i-";
            string         result   = obj.Convert(input);

            Assert.AreEqual <string>(expected, result);
        }
Exemple #2
0
        public void PostFixCalculationTest()
        {
            List <string> postFix = new List <string>()
            {
                "1", "2", "+", "3", "*", "6", "+", "2", "3", "+", "/"
            };
            var infixToPostFix = new InfixToPostFix();

            Console.WriteLine(infixToPostFix.Calculate(postFix));
            postFix = new List <string>()
            {
                "5", "1", "2", "+", "4", "*", "+", "3", "-"
            };
            Console.WriteLine(infixToPostFix.Calculate(postFix));
        }
Exemple #3
0
        public void PostFixConversionTest()
        {
            List <string> inFix = new List <string>()
            {
                "(", "1", "+", "2", ")", "*", "3"
            };
            var           infixToPostFix = new InfixToPostFix();
            List <string> postFix        = infixToPostFix.ConvertToPostFix(inFix);

            Console.WriteLine(String.Join(" ", infixToPostFix.Calculate(postFix)));

            inFix = new List <string>()
            {
                "(", "(", "(", "1", "+", "2", ")", "*", "3", ")", "+", "6", ")", "/", "(", "2", "+", "3", ")"
            };
            postFix = infixToPostFix.ConvertToPostFix(inFix);
            Console.WriteLine(String.Join(" ", infixToPostFix.Calculate(postFix)));
        }
Exemple #4
0
        public void DisplayStack()
        {
            Console.WriteLine("Select Question[1-12]");
            int choice = int.Parse(Console.ReadLine());

            switch (choice)
            {
                #region CSharp Stack Collection
            case 1:
                Console.WriteLine("--------" + choice + ".CSharp Stack Collection --------");
                StackCollectioninCsharp <int> sk1 = new StackCollectioninCsharp <int>();
                int[] arr1 = { 10, 78, 34, 65 };
                foreach (var v in arr1)
                {
                    sk1.Push(v);
                }
                sk1.Print();
                Console.WriteLine($"Count is :{sk1.myStack.Count}");
                Console.WriteLine($"78 Is Present :{sk1.myStack.Contains(78)}");
                sk1.myStack.Pop();
                sk1.Print();
                break;
                #endregion

                #region Stack using Array
            case 2:
                Console.WriteLine("--------" + choice + ".Stack using Array--------");
                StackUsingArray sk2 = new StackUsingArray(10);
                sk2.Push(10);
                sk2.Push(20);
                sk2.Push(30);
                sk2.Push(40);
                sk2.Print();
                sk2.Pop();
                sk2.Print();
                break;
                #endregion

                #region Stack Using Linked List
            case 3:
                Console.WriteLine("--------" + choice + ".Stack Using Linked List--------");
                StackUsingLinkedList <int> sk3 = new StackUsingLinkedList <int>();
                int[] arr3 = { 10, 20, 30, 40 };
                foreach (var v in arr3)
                {
                    sk3.Push(v);
                }
                sk3.Print();
                sk3.Peek();
                sk3.Print();
                sk3.Pop();
                sk3.Print();
                Console.WriteLine($"Size Of Stack: {sk3.GetSize()}");
                break;
                #endregion

                #region Balanced Expression
            case 4:
                Console.WriteLine("--------" + choice + ".Balanced Expression--------");
                BalancingSymbolPattern sk4 = new BalancingSymbolPattern();
                Console.WriteLine($"Expression is Balanced using Stack: {sk4.CheckPattern("[{(}]", "Stack")}");
                Console.WriteLine($"Expression is Balanced  using Stack Adt: {sk4.CheckPattern("[{)}]", "StackADT")}");
                Console.WriteLine($"Expression is Balanced using Stack: {sk4.CheckPattern("[{()}]", "Stack")}");
                Console.WriteLine($"Expression is Balanced  using Stack Adt: {sk4.CheckPattern("[{()}]", "StackADT")}");
                break;
                #endregion

                #region Postfix Expression Evaluation Using Stack
            case 5:
                Console.WriteLine("--------" + choice + ".Postfix Expression Evaluation  Using Stack--------");
                PostfixImplimentationUsingStack sk5 = new PostfixImplimentationUsingStack();
                Console.WriteLine($"Postfix Expression result is {sk5.EvaluatePostfixExpression("123*+5-")}");
                break;
                #endregion

                #region Infix to Postfix
            case 6:
                Console.WriteLine("--------" + choice + ".Infix to Postfix--------");
                InfixToPostFix sk6 = new InfixToPostFix();
                string         exp = "a+b*(c^d-e)^(f+g*h)-i";
                //string exp ="a*b-(c+d)-e";
                Console.WriteLine($"Infix {exp} of  Postfix is : {sk6.ConvertInfixToPostFix(exp.Replace(" ", string.Empty))}");
                break;
                #endregion

                #region Infix To Prefix
            case 7:
                Console.WriteLine("--------" + choice + ".Infix To Prefix--------");
                InfixToPrefix sk7 = new InfixToPrefix();
                //string exp7 = "a*b-(c+d)-e";
                string exp7 = "((a/b)+c)-(d+(e*f))";
                Console.WriteLine($"Infix {exp7} of Prefix is {sk7.ConvertInfixToPrefix(exp7.Replace(" ", string.Empty))}");
                break;
                #endregion

                #region Convert Prefix and Postfix to Infix
            case 8:
                Console.WriteLine("--------" + choice + ".Convert Prefix and Postfix to Infix--------");
                ConvertToInfix sk8     = new ConvertToInfix();
                string         exppre8 = "*-A/BC-/AKL";
                Console.WriteLine($"Pefix {exppre8} of Infix is {sk8.ConvertPreToInfix(exppre8.Replace(" ", string.Empty))}");
                string expost8 = " ab*c+";
                Console.WriteLine($"Postfix {expost8} of Infix is {sk8.ConvertPostToInfix(expost8.Replace(" ", string.Empty))}");
                break;
                #endregion

                #region Convert Post to Pre and Viceversa
            case 9:
                Console.WriteLine("--------" + choice + ".Convert Post to Pre and Viceversa--------");
                ConvertPreToPost_PostToPre sk9 = new ConvertPreToPost_PostToPre();
                string exp9 = "*-A/BC-/AKL";
                Console.WriteLine(sk9.ConvertExpression(exp9.Replace(" ", string.Empty)));
                break;
                #endregion

                #region Sort Stack using Recursion
            case 10:
                Console.WriteLine("--------" + choice + ".Sort Stack using Recursion--------");
                string    str10 = "-3 14 18 -5 30";
                SortStack sk10  = new SortStack(str10);
                sk10.PrintStack();
                break;
                #endregion

                #region Get Min From Stack with O(1)
            case 11:
                Console.WriteLine("--------" + choice + ". Get Min From Stack with O(1)--------");
                GetMinStack sk11 = new GetMinStack();
                sk11.Push(2);
                sk11.Push(4);
                sk11.Push(6);
                sk11.Push(1);
                sk11.Push(5);
                Console.WriteLine("Stack is 5,1,6,4,2");
                Console.WriteLine($"min value in stack is {sk11.GetMin()} and top of stack is {sk11.Top()}");
                sk11.Pop();
                sk11.Pop();
                Console.WriteLine("After 2 Pops");
                Console.WriteLine($"min value in stack is {sk11.GetMin()} and top of stack is {sk11.Top()}");
                break;
                #endregion

                #region Get MAX From Stack with O(1)
            case 12:
                Console.WriteLine("--------" + choice + ".Get MAX From Stack with O(1)--------");
                GetMaxStack sk12 = new GetMaxStack();
                sk12.Push(2);
                sk12.Push(7);
                sk12.Push(6);
                sk12.Push(8);
                sk12.Push(5);
                Console.WriteLine("Stack is 5,8,6,7,2");
                Console.WriteLine($"Max value in stack is {sk12.GetMax()} and top of stack is {sk12.GetTop()}");
                sk12.Pop();
                sk12.Pop();
                Console.WriteLine("After 2 Pops");
                Console.WriteLine($"Max value in stack is {sk12.GetMax()} and top of stack is {sk12.GetTop()}");
                break;
                #endregion

                #region
            case 13:
                Console.WriteLine("--------" + choice + ".--------");

                break;
                #endregion

                #region
            case 14:
                Console.WriteLine("--------" + choice + ".--------");

                break;
                #endregion

                #region
            case 15:
                Console.WriteLine("--------" + choice + ".--------");

                break;
                #endregion

            default:
                Console.WriteLine("Oops! Inavalid Choice.");
                break;
            }
        }