由於某些原因,當我試圖做我的導數時,它只是做一個項的導數而不是整個多項式。多項式在鏈表中的導數
struct term{
double coef;
unsigned deg;
struct term * next;
};
我有一個結構,然後還有一個類具有深拷貝構造函數和=構造函數的多項式。 在私有類,我有一個term* ptr
,這裏是我的導數
void Polynomial::derivative (Polynomial *p){
term *x;
if (ptr == NULL)
return ;
term *temp;
temp = ptr;
while (temp != NULL){
if (ptr == NULL){
ptr = new term ;
x = ptr ;
}
else{
x -> next = new term ;
x = x -> next ;
}
x-> coef = temp -> coef * temp -> deg;
x-> deg = temp -> deg - 1;
temp = temp -> next;
}
ptr=x;
}
這樣的代碼,當我嘗試的3x^4 + 3x^4 + 6x^7 + 3x^4 + 3x^4 + 6x^7 + 2x^9
的衍生我得到18x^8
我一直在尋找通過代碼,並有不知道爲什麼它只是在最後一個術語中這樣做,因爲它是一個while循環,應該從開始直到NULL並執行導數。
你不妨考慮返回一個多項式填充這個導數。即不要xform這一個。只要走一遍,在計算它們時從返回多項式中添加項。 – WhozCraig