第4周專案6 多項式求和

2021-07-05 21:52:06 字數 1808 閱讀 8218

問題及**:

檔名稱:main.cpp

問題描述:用單鏈表儲存一元多項式,並實現兩個多項式的加法

**:

#include #include #define max 20          //多項式最多項數

typedef struct //定義存放多項式的陣列型別

polyarray;

typedef struct pnode //定義單鏈表結點型別,儲存多項式中的一項,鍊錶構成多項式

polynode;

void disppoly(polynode *l) //輸出多項式

printf("\n");

}void destroylist(polynode *&l) //銷毀單鏈表

free(p);

}void createlistr(polynode *&l, polyarray a, int n) //尾插法建表

r->next=null; //終端結點next域置為null

}void sort(polynode *&head) //按exp域遞減排序

}}void add(polynode *ha,polynode *hb,polynode *&hc) //求兩有序集合的並,完成加法

else if (pa->expexp)

else //pa->exp=pb->exp

pa=pa->next;

pb=pb->next;}}

if (pb!=null) pa=pb; //複製餘下的結點

while (pa!=null)

tc->next=null;

}int main()

,,,};

polyarray b= ,,,,};

createlistr(ha,a,4);

createlistr(hb,b,5);

printf("原多項式a:");disppoly(ha);

printf("原多項式b: ");

disppoly(hb);

sort(ha);

sort(hb);

printf("有序多項式a: ");

disppoly(ha);

printf("有序多項式b: ");

disppoly(hb);

add(ha,hb,hc);

printf("多項式相加: ");

disppoly(hc);

destroylist(ha);

destroylist(hb);

destroylist(hc);

return 0;

}

執行結果:

知識點總結:以多項式

p(x)=-3.4*x^10-9.6*x^8+7.2*x^2+x

為例,儲存這個多項式的陣列如下圖:

可以看出,這種方案適合對某些多項式的處理。但是,在處理一些次數高但項數少的多項式時,存在浪費空間的現象,會有很多閒置的0。

本例中充分運用了鍊錶的有關知識,實現了多項式的求和問題,與陣列相比,節省了很多空間。

第4周專案6 多項式求和

問題及 檔名稱 第4周專案6 多項式求和.cpp 作 者 劉強 完成日期 2015年10月3日 版 本 號 v1.0 問題描述 用單鏈表儲存一元多項式,並實現兩個多項式的加法。輸入描述 若干資料。程式輸出 多項式a,多項式b,有序多項式a,b,相加後的多項式。include include defi...

第4周專案6 多項式求和

問題及 檔名稱 專案6.cpp 作 者 王聰 完成日期 2015年10月5日 版 本 號 v1.0 問題描述 用單鏈表儲存一元多項式,並實現兩個多項式的加法。輸入描述 無 程式輸出 多項式a,多項式b,有序多項式a,b,相加後的多項式。include include define max 20 多項...

第4周專案5 多項式求和

問題及 檔名稱 7.cpp 作 者 王修文 完成日期 2016年9月22日 版 本 號 v1.0 問題描述 演算法庫包括兩個檔案 標頭檔案 dlinklist.h,包含定義順序表資料結構的 巨集定義 要實現演算法的函式的宣告 原始檔 dlinklist.cpp,包含實現各種演算法的函式的定義 請採用...