public bool CheckBrackets(string sampleBrackets)
        {
            MyDynamicStack <char> myDynamicStack = new MyDynamicStack <char>();

            char[] bracketChars = sampleBrackets.ToCharArray();

            foreach (var bracketChar in bracketChars)
            {
                if (bracketChar == '(' || bracketChar == '{' || bracketChar == '[')
                {
                    myDynamicStack.Push(bracketChar);
                }
                else
                {
                    if (bracketChar == ')' && myDynamicStack.Peek() == '(')
                    {
                        myDynamicStack.Pop();
                    }
                    else if (bracketChar == '}' && myDynamicStack.Peek() == '{')
                    {
                        myDynamicStack.Pop();
                    }
                    else if (bracketChar == ']' && myDynamicStack.Peek() == '[')
                    {
                        myDynamicStack.Pop();
                    }
                    else
                    {
                        return(false);
                    }
                }
            }

            if (myDynamicStack.IsEmpty())
            {
                return(true);
            }

            return(false);
        }
        public StringBuilder InfixToPostfixConverter(StringBuilder stringBuilder)
        {
            MyDynamicStack <string> stack         = new MyDynamicStack <string>();
            StringBuilder           appendBuilder = new StringBuilder();
            StringBuilder           tempBuilder   = new StringBuilder();
            int length = stringBuilder.Length;

            for (int i = 0; i < length; i++)            //String üzerinde soldan-sağa dolaşılır.
            {
                string c = stringBuilder[i].ToString(); //Stack string seçildiğinden gelen char ifadesi string'e dönüştürülür.

                if (char.IsLetterOrDigit(c, 0))
                {
                    appendBuilder.Append(c);
                }
                else if (c == "^" || c == "(" || c == "{") //Parantez ve ^ önceliği için koşullar, [ ] parantezi iki ve üstü haneli sayıları temsilen kullanılmıştır.
                {
                    stack.Push(c);
                }
                else if (c == ")" || c == "}")
                {
                    while (stack.Peek() != null && stack.Peek() != "(" && stack.Peek() != "{")
                    {
                        appendBuilder.Append(stack.Pop());
                    }

                    stack.Pop();
                }
                else if (c == "[") //Sağdan sola tarama yapılır, [ ifadesine rastlanması halinde döngüye girilir, ta ki ] ifadesine gelene değin.
                {
                    char join = stringBuilder[++i];
                    while (join != ']')
                    {
                        tempBuilder.Append(join);//[ifade] ifade geçici olarak tempBuilder içinde tutulur.
                        join = stringBuilder[++i];
                    }

                    appendBuilder.Append("[" + tempBuilder.ToString() + "]");//İki ve üstü haneli sayılar [] parantezleri arasına yazılır.
                    tempBuilder.Clear();
                }
                else
                {
                    if (CheckRank(c) > CheckRank(stack.Peek()))
                    {
                        stack.Push(c);
                    }
                    else
                    {
                        while (stack.Peek() != null && CheckRank(c) <= CheckRank(stack.Peek()))
                        {
                            appendBuilder.Append(stack.Pop());
                        }
                        stack.Push(c);
                    }
                }
            }

            while (stack.Peek() != null)
            {
                appendBuilder.Append(stack.Pop());
            }

            return(appendBuilder);
        }
        public StringBuilder InfixToPrefixConverter(StringBuilder stringBuilder)
        {
            MyDynamicStack <string> stack         = new MyDynamicStack <string>();
            StringBuilder           appendBuilder = new StringBuilder();
            StringBuilder           tempBuilder   = new StringBuilder();
            int length = stringBuilder.Length;

            for (int i = length - 1; i >= 0; i--)//Sondan başa doğru tarama yapılır.
            {
                string c = stringBuilder[i].ToString();

                if (char.IsLetterOrDigit(c, 0))
                {
                    appendBuilder.Append(c);
                }
                else if (c == "^" || c == ")" || c == "}")
                {
                    stack.Push(c);
                }
                else if (c == "(" || c == "{")
                {
                    while (stack.Peek() != null && stack.Peek() != ")" && stack.Peek() != "}")
                    {
                        appendBuilder.Append(stack.Pop());
                    }

                    stack.Pop();
                }
                else if (c == "]") //Tarama tersten yapıldığı için karşılaşılan ilk parantez ] olur.
                {
                    char join = stringBuilder[--i];
                    while (join != '[')
                    {
                        tempBuilder.Append(join); // Reverse işlemi gerçekleşeceğinden Insert yerine Append metodunu kullandım.
                        join = stringBuilder[--i];
                    }

                    appendBuilder.Append("[" + tempBuilder.ToString() + "]");
                    tempBuilder.Clear();
                }
                else
                {
                    if (CheckRank(c) > CheckRank(stack.Peek()))
                    {
                        stack.Push(c);
                    }
                    else
                    {
                        while (stack.Peek() != null && CheckRank(c) < CheckRank(stack.Peek()))
                        {
                            appendBuilder.Append(stack.Pop());
                        }
                        stack.Push(c);
                    }
                }
            }

            while (stack.Peek() != null)
            {
                appendBuilder.Append(stack.Pop());
            }

            return(Reverse(appendBuilder));//İfade ters çevrilerek işlem sonlandırılır.
        }