static bool IsCorrectParentheses(string t) { string begin = "{([", end = "})]"; ArrayStack stack = new ArrayStack(t.Length); for (int i = 0; i < t.Length; i++) { if (begin.IndexOf(t[i].ToString()) >= 0) { stack.push(t[i]); } else { int j = end.IndexOf(t[i].ToString()); if (j >= 0) { if (stack.isEmpty() || !stack.pop().Equals(begin[j])) { return(false); } } } } return(stack.isEmpty()); }
static string InfixToPostfix(string text) { string text1 = ""; ArrayStack data = new ArrayStack(text.Length); if (IsCorrectParentheses(text)) { for (int i = 0; i < text.Length; i++) { char token = text[i]; if (IsOperator(token)) { int p = Lv(token); while (!data.isEmpty() && Lv((char)data.peek(), true) >= p) { text1 += data.pop(); } if (token.Equals(')')) { data.pop(); } else { data.push(token); } } else { text1 += text[i]; } } } while (!data.isEmpty()) { text1 += data.pop(); } return(text1); }