資料結構 一元多項式的乘法與加法運算

2021-10-08 12:37:18 字數 2054 閱讀 8369

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

輸入格式:

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

c語言**:

#include

#include

typedef

struct polynode *polynomial;

struct polynode

;polynomial readpoly()

;void

attach

(int c,

int e, polynomial *prear )

;polynomial add

( polynomial p1, polynomial p2 )

;polynomial mult

( polynomial p1, polynomial p2 )

;void

printpoly

( polynomial p )

;int

main()

polynomial readpoly()

t = p;

p = p->link;

free

(t);

/* 刪除臨時生成的頭結點 */

return p;

}void

attach

(int c,

int e, polynomial *prear )

polynomial mult

( polynomial p1, polynomial p2 )

t1 = t1->link;

while

(t1)

}else

t2 = t2->link;

} t1 = t1->link;

} t2 = p;

p = p->link;

free

(t2)

;return p;

}polynomial add

( polynomial p1, polynomial p2 )

else

if(t1->expon > t2->expon)

else

}while

(t1)

while

(t2)

rear->link=

null

; temp=p;

p=p->link;

free

(temp)

;return p;

}void

printpoly

( polynomial p )

/* 輸出多項式 */

while

( p )

printf

("\n");

}

分析

如何將兩個多項式相乘

1.將乘法運算轉換為加法運算

將p1的首項依次與p2多項式各項相乘,將結果存入新建的鍊錶中,此時鍊錶中的各項按指數從高到低排列

2.逐項插入

將p1的其餘項乘p2的各項,得到其餘項,將其插入到新建的鍊錶中。注意得到的項的指數可能與原先的項的指數相同,此時要考慮係數和是否為0,如果為0,要刪除乙個節點。

資料結構 一元多項式的乘法與加法運算

7 2 一元多項式的乘法與加法運算 15 分 時間限制 200 ms 記憶體限制 64 mb 長度限制 16 kb 設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。...

資料結構 一元多項式的乘法與加法運算

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

資料結構 一元多項式的乘法與加法運算

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