一元多項式的加法和乘法(浙大)

2021-10-21 01:38:11 字數 2010 閱讀 8825

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

輸入格式:

輸入分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

#include

#include

/*多項式加法:

採用不帶頭結點的單向鍊錶,按照指數遞減的順序排列各項

思路:p1,p2分別指向兩個多項式的第乙個結點, 不斷迴圈

if p1->expon==p2->exoon:係數相加,如果結果不為零,則 作為結果對應項的係數。移動指標

if p1->expon>p2->expon:將p1的當前項存入使p1移動。

最後再接剩餘項

else 反之

*/struct polynode

;typedef

struct polynode* poloynomial;

poloynomial p1, p2;

poloynomial readpoly()

t = p; p = p->link;

free

(t);

//把空結點去掉,返回乙個非空結點

return p;

}int

compare

(int p1,

int p2)

void

attach

(int p1,

int p2, poloynomial *rear)

poloynomial polyadd

(poloynomial p1, poloynomial p2)

}/*將未處理完的另乙個多項式的所以結點依次複製到結果多項式中去*/

for(

; p1; p1 = p1->link)

attach

(p1->coef, p1->expon,

&rear)

;for

(; p2; p2 = p2->link)

attach

(p2->coef, p2->expon,

&rear)

; rear->link =

null

; temp = front;

front = front->link;

/*令front指向結果多項式的非零項*/

free

(temp)

;return front;

}/*一元多項式的乘積*/

poloynomial polymult

(poloynomial p1, poloynomial p2)

t1 = t2->link;

while

(t1)

}else}}

t2 = p;

p = p->link;

free

(t2)

;return p;

}void

printpoly

(poloynomial p)

while

(p)}

intmain

(void

)

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

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

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

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

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

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