(решено) C: добавить полиномиальный термин в связанный список в порядке возрастания показателей - PullRequest
0 голосов
/ 14 апреля 2020

Привет, я новичок в c программировании и не знаком со связанным списком. Здесь я хочу написать функцию addPolyTerm (), которая принимает два целых числа (коэффициент и экспонента) в качестве входных данных и добавляет их к существующему полиному по степени. У меня также есть функция для отображения полинома. Я пробовал много раз, это лучшая версия, которую я получил.

//assimilate new term into the existing polynomial
int addPolyTerm(int coeff, int expo) {
    struct PolyTerm* newTerm = (struct PolyTerm *)malloc(sizeof(struct PolyTerm));
    if(newTterm == NULL) return -1;
    newTerm -> coeff = coeff;
    newTerm -> expo = expo;
    newTerm -> next = NULL;

    Struct PolyTerm *term1, *term2;
    if(head == NULL) head = newTerm;  //the linked list is empty
    else {
        term1 = head;
        //move forward when the new expo is larger than the previous one
        while(term1 != NULL && term1->expo < expo) { 
            term2 = term1;
            term1 = term1->next;            
        }
        //merge polynomial terms with the same exponent
        if(term1 != NULL && term1->expo == expo) {
            term1->coeff += coeff;
        }
        else{
            term2->next = newTerm;
            newTerm->next = term1;
        }
    }
    return 0;

}

Вводимый текст (слева: коэффициент, справа: экспонента):

12 3
0 2
4 5

ожидаемый вывод:

0x2+12x3+4x5

но мой вывод:

12x3+4x5

Похоже, моя функция не справилась с условием, когда экспозиция меньше, чем у предыдущего термина. Как я могу это исправить?

Заранее спасибо!

...