Привет, я новичок в 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
Похоже, моя функция не справилась с условием, когда экспозиция меньше, чем у предыдущего термина. Как я могу это исправить?
Заранее спасибо!