設計函式分別求兩個一元多項式的乘積與和。
輸入分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行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...