I am trying to evaluate a polynomial that is stored in a linked list. I ask the user to input a string, the string gets converted to a linked list polynomial, then when I try to evaluate it the program gets a run time error and closes. The weird thing is "checkpoint 1" shows, but "checkpoint 2" does not. Here is the piece(s) of code I am working with, and the evaluate function. My linked list is fine, and there is nothing wrong with it. I have tried

Code:
#include <iostream>
#include <fstream>
#include <string>
#include <ctype.h>
#include "class.h"

double EvaluatePoly(POLY input, int num);

//pre-condtion: the input string must have all coefficients
//including 1. does not need to have all powers with 0 coefficients
//DOES NEED powers of zero if only a coefficient!
void TranslateStrToLinkedList(char* str, POLY &input);

int main()
{
    char* input;
    int from, to;
    int answer = 0;
    POLY poly;

    cout<<"Enter a polynomial like t^3+2t^1+9t^0: ";
    cin>> input;

    TranslateStrToLinkedList(input, poly);
    
    poly.print();
    
    cout<<endl<<"Enter domain for t: ";
    cin>> from >> to;
    while(from <= to){
        cout<<"checkpoint 1\n";
        answer = answer + EvaluatePoly(poly,from);
        cout<< answer <<endl;
        from++;
    }
}

//evaluates a linked list with polynomials
double EvaluatePoly(POLY input, int num)
{
    cout<<"checkpoint 2"; //NOT SHOWN!!! >.<
    double ans = 0; //prevents problems if input is empty
    int hi_degree = 0; //prevents problems if input is empty
    cout<<"checkpoint 3"<<endl;
    hi_degree = input.degree();

    while(input.isLast(hi_degree) != 0){
        ans = ans + input.coefficient(hi_degree)*(num^hi_degree);
        cout<<ans<<endl;
        hi_degree--;
    }
    return ans;
}

void TranslateStrToLinkedList(char* str, POLY &input)
{
    char ch, *chstr;
    double coef = 0;
    int pow = 0, n = 0;
    while( n < strlen(str)-1){
        ch = str[n];
        
        if(isdigit(ch) || ch == '-' || ch == '+'){
            if(ch == '-'){
                ch = str[n+1];
                chstr = &ch;
                coef = -1*atof(chstr);
                chstr = &str[n+4];
                pow = atoi(chstr);
                cout<<endl<<coef<<" 1 "<<pow<<endl;
                n++; n++; n++; n++; n++; //move 5 places
                input.append(coef,pow);
            }
            else if(ch == '+'){
                ch = str[n+1];
                chstr = &ch;
                coef = atof(chstr);
                chstr = &str[n+4];
                pow = atoi(chstr);
                cout<<endl<<coef<<" 2 "<<pow<<endl;
                n++; n++; n++; n++; n++; //move 5 places
                input.append(coef,pow);
            }
            else if(isdigit(ch)){
                chstr = &ch;
                coef = atof(chstr);
                chstr = &str[n+3];
                pow = atoi(chstr);
                cout<<endl<<coef<<" 3 "<<pow<<endl;
                n++; n++; n++; n++; //move 4 places
                input.append(coef,pow);
            }
        }
    }
    return;    
}
Here is the way it looks when ran. The "3 3 2" means coefficient is 3, it went to the 3rd if statement in TranslateStrToLinkedList(), and has a power of 2. This was for my assurance it was working right.
Code:
Enter a polynomial like t^3+2t^1+9t^0: 3x^2

3 3 2
3x^2
Enter domain for t: 2 4
checkpoint 1