所以我得到了这个创建多项式的结构(由用户输入):
struct Term
{
double coefficient;
unsigned exponent;
Term *next;
};
我应该编写一个函数来减去由这个结构组成的两个多项式。我编写了以下代码,我的代码正在编译,但我得到了奇怪的输出。
TermPtr subtract(TermPtr p1, TermPtr p2) {
//can't change the function declaraction, only the contents in the function
TermPtr newPoly; //declares newPoly
newPoly = new Term; //creates new node
newPoly -> next=p1; // has next in newPoly point to
newPoly -> next=p2; // both p1 and p2 (not sure why really (?))
if (p1 -> exponent == p2 -> exponent){
newPoly->coeff = ((p1 -> coeff) - (p2 -> coeff));
}
// if the exponents in each p1 and p2 match, perform subtraction
// on coefficients
return newPoly; // return the new polynomial
}
这是我输出的一个例子:
Polynomial 1:
2.00 * X^4 + 1.00 * X^2
Polynomial 2:
1.00 * X^4 + 2.00 * X^2
//polynomial 1 - polynomial p2
//negative numbers are valid
Result of subtracting two polynomials:
1.00 * X^0 + 1.00 * X^4 + 2.00 * X^2 //wrong
我认为问题出在我的newPoly指向p1和p2的地方。我不确定newPoly应该指向哪个节点,或者两个节点是否应该指向newPoly。我写了那些代码行,因为没有它们,我的代码没有编译,这是有道理的,因为newPoly不能只是指向什么(或没有被指向?)。并且一些节点不应该以NULL结尾才能实际成为链表吗?不知道这会发生什么。
我已经在这方面工作了几天,我无法弄明白。任何帮助或解释将不胜感激。谢谢。