7 2 一元多項式的乘法與加法運算 C語言

2021-10-05 01:22:11 字數 2081 閱讀 2622

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

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

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

434

-526

1-20

3520-

7431

1524-

2522

3021-10

20-218

356-33

5144-

153182

-615

20-44

-529

1-20

#include

#include

typedef

struct node

*list;

//定義,注意這裡的list ==struct node*,所以後面list定義的都是指標型別,而list *r就是二重指標,相當於struct node**,作用是指標的傳位址的實現

void

attach

(int x,

int z,list *r)

;list input()

;list getmul

(list p1,list p2)

;list getsum

(list p1,list p2)

;void

output

(list p)

;int

main()

list input()

} temp=p;

p=p->next;

free

(temp)

;//這一步是把開頭的沒有資料的那一節刪了free,不然第一節的x,z是空的,有的題目不刪

return p;

}void

attach

(int x,

int z,list *r)

list getmul

(list p1,list p2)

t1=t1->next;

//這裡是先把p1的第乙個數和最後乙個數相乘得到結果,因為只有一次,不用考慮指數插入的問題,這步算是思路推導的步驟,可以完全省略的

//先得到一組資料,再考慮後面的資料如何插入

while

(t1)

//計算當下一項的指數大於待插入項那就直接檢查下一項

if(r->next&&r->next->z==z)

else

//當下一項和待插入項指數相等還要考慮係數抵消的情況

}else

t2=t2->next;

} t1=t1->next;

} temp=p;

p=p->next;

free

(temp)

;return p;

//老套路了,刪除鍊錶的頭然後free

}list getsum

(list p1,list p2)

p1=p1->next;

p2=p2->next;

//上面的是係數相等,都要判斷指數會不會抵消,然後這裡p1和p2要同時下移

}else

if(p1->z > p2->z)

else

//正常的賦值

}while

(p1)

while

(p2)

//當一邊加完了,就判斷沒有加完的,這裡是乙個乙個賦值,所以用while,要是鍊錶的有序合併那就用if就行,血的教訓嗷

temp=p;

p=p->next;

free

(temp)

;return p;

}void

output

(list p)

else

printf

("%d %d"

,p->x ,p->z )

; p=p->next;

}}

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

written by robert wang in southwest university of science and technology.輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行...

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

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

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

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