一元多項式的乘法與加法運算

2021-08-10 12:12:59 字數 2087 閱讀 2667

設計函式分別求兩個一元多項式的乘積與和。

輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數(絕對值均為不超過1000的整數)。數字間以空格分隔。

輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。零多項式應輸出0 0

4 3 4 -5 2  6 1  -2 0

3 5 20 -7 4 3 1

15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1

5 20 -4 4 -5 2 9 1 -2 0

#includeusing namespace std;

typedef struct polynode * polynominal;

struct polynode

;void attach(int c, int e, polynominal *prear)

void fun(polynominal *prear)//用指向指標的指標做形參

(*prear) = (*prear)->link; }}

polynominal readpoly()

temp = p;

p = p->link;

free(temp);//釋放臨時生成的空的頭結點

return p;

}//rear和p都指向同乙個結構體,指向rear的指標做形參,改變了實參rear,也就改變了rear指向的結構體,於是p所指向的結構體也就順勢改變

polynominal add(polynominal p1, polynominal p2)

else//係數和不為0,計入

}else if (temp1->expon > temp2->expon)//指數大的寫入結果,小的留下

else//指數大的寫入結果,小的留下

}while (temp1)//繼續處理剩下的某乙個多項式,直接記入結果

while (temp2)//繼續處理剩下的某乙個多項式,直接記入結果

temp = p;

p = p->link;

free(temp);//釋放最開始的空結點

return p;

}polynominal mult(polynominal p1, polynominal p2)

while (temp2)

//先用多項式1最高項乘多項式2中每一項,生成乙個多項式的鍊錶,後續的每一項插入該鍊錶的合適位置

temp1 = temp1->link;

while (temp1)

if (rear->link&&rear->link->expon == e)//鍊錶中有這一項,該合併

else//該項係數若等於0,清除該項

}else//鍊錶中無這一項(包括兩種情況,中間或末尾)

//注意這裡沒有餘留的鏈,因此不用釋放什麼空間

temp2 = temp2->link;

} temp1 = temp1->link;

} temp = p;

p = p->link;

free(temp);//釋放最初臨時生成的空頭結點

rear = p;

fun(&rear);//清除積裡面的係數為0項。注意不能直接對p操作,因為最後要返回p,而操作中涉及p=p->link

return p;

}void printpoly(polynominal p)//要求不同項用空格隔開,最後一項後無空格

else

cout << " " << p->coef << " " << p->expon;//可以理解為第一項前無空格,後續每一項前有乙個空格

p = p->link;

} cout << "\n";

}int main()

通過這道例題,可以更加熟悉鍊錶的相關知識,尤其是對於鍊錶的刪除、插入等處理。
也可以加深一些對於函式和指標知識的理解,掌握一些解決問題的小技巧。

一元多項式的乘法與加法運算

設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...

一元多項式的乘法與加法運算

設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...

一元多項式的乘法與加法運算

一元多項式的乘法與加法運算 20 分 設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數...