Me temo que el problema general que quieres resolver es más complicado de como lo has planteado. Lo que quieres es un análisis sintáctico y semántico de una cadena de caracteres. Por ejemplo, esto es un polinomio:
x^2+6x+10
Esto no lo es:
diego^Dequis+123,56
Sin embargo para un lenguaje ambos son cadenas de caracteres sin más significado que ese.
Para que tu programa "entienda" la diferencia entre lo que es un polinomio y qué no, debes hacer un análisis sintáctico (que la cadena contenga caracteres en el orden y el lugar correctos) y un análisis semántico (que los elementos sintácticamente correctos tengan sentido).
Por ejemplo, esta cadena:
x+-1^x0+6
Sería sintácticamente correcta porque los símbolos contenidos en ella son todos permitidos para la construcción de un polinomio, pero la cadena no tiene sentido semántico (¿cuál es el exponente de la potencia? ¿x0 o x0+6?, en el primer caso el resultado es cero, y cualquier número elevado a la potencia cero está indefinido). Por otro lado para que una ecuación sea un polinomio solo debe admitir sumas, restas, multiplicación y potenciación, por lo tanto:
x2/x3
No es un polinomio (aunque es una expresión algebráica perfectamente válida).
Para resolver todos estos problemas se han escrito libros enteros en el tema de construcción de compliadores e intérpretes.
Tengo hecho un programa en Pascal que analiza una expresión algebráica y devuelve un resultado. Puedes verlo aquí:
http://driverop.com.ar/pascal.php (Evaluador de Expresiones).