單鏈表實現 一元多項式的乘法與加法運算

2021-08-14 19:46:23 字數 2217 閱讀 4329

(pta | 程式設計類實驗輔助教學平台  

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

輸入格式:

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

copy

#include #include #includetypedef struct polynode* polynomial;

struct polynode ;

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

int compare(int num1, int num2);

polynomial polyadd(polynomial p1, polynomial p2);

polynomial polymultiply(polynomial p1, polynomial p2,int num);//將p1的第一項與p2的所有項做乘法並返回

int main(void)

p_temp = p1;

p1 = p1->next;

free(p_temp); //釋放頭結點

scanf("%d", &num2); //讀取p2資訊

for (int i = 0;i < num2;i++)

p_temp = p2;

p2 = p2->next;

free(p_temp); //釋放頭結點

//乘法,具體演算法是用p1的每一項都和p2的所有項乘,再將所得的加在一起,加法已實現

polynomial domultiplication = p1; //做乘法

polynomial multiplication = null; //記錄乘法結果

for (int i = 0;i < num1;i++)

if (multiplication) //處理第一項

else

while (multiplication)

printf("\n");

//加法

polynomial sum = polyadd(p1, p2);

if (sum) //處理第一項

else

for (;sum;sum = sum->next) //處理之後項

return 0;

}void attach(int c, int e, polynomial* prear) //在尾指標後連上另一項

int compare(int num1, int num2) //比較大小

polynomial polyadd(polynomial p1, polynomial p2) //多項式加法

} //將未處理完的另乙個多項式的所有結點複製到結果多項式中

for (;p1;p1 = p1->next)

attach(p1->coef, p1->expon, &rear);

for (;p2;p2 = p2->next)

attach(p2->coef, p2->expon, &rear);

rear->next = null;

temp = front;

front = front->next;//令front指向結果多項式第乙個非零項

free(temp);//釋放臨時空表頭結點

return front;

}polynomial polymultiply(polynomial p1, polynomial p2,int num) //p1的一項與p2所有項做乘法

front = front->next;

free(temp);

return front;

}

單鏈表應用 一元多項式

單鏈表應用 一元多項式 問題描述 編寫乙個程式用單鏈表儲存多項式,並實現兩個一元多項式a與b相加的函式。a,b剛開始是公升序的,a與b之和按降序排列。例如 多項式a 1.2x 0 2.5x 1 3.2x 3 2.5x 5 多項式b 1.2x 0 2.5x 1 3.2x 3 2.5x 5 5.4x 1...

polynomial 一元多項式乘法實現

polynomial 一元多項式乘法實現 include stdio.h include malloc.h include stdlib.h typedef struct lnodelink,linklist linklist initlist link makenode linklist crea...

一元多項式求和演算法(單鏈表實現)

單鏈表的應用舉例 採用單鏈表儲存,則每乙個非零項對應單鏈表中的乙個節點,且單鏈表應按指數遞增序列排列。為了節省空間只儲存非零項。其中 eof為係數域,存放非零項的係數 exp為指數域,存放非零項的指數 next為指標域,存放下一結點的指標 偽 1.工作指標pre,p,qre,q初始 2.while ...