資料結構 鍊錶 多項式加法

2021-08-08 07:27:02 字數 2203 閱讀 3453

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

可以看出,這種方案適合對某些多項式的處理。但是,在處理一些次數高但項數少的多項式時,存在浪費空間的現象,會有很多閒置的0。
可以使用如下定義的單鏈表結構儲存多項式:鍊錶中的每乙個結點是多項式中的一項,結點的資料域包括指數和係數兩部分,由指標域連線起多項式中的各項。

用於表示多項式的鍊錶將如下圖所示,在建立多項式的鍊錶時,已經令結點按指數由大到小的順序排列。

*輸入描述:無

*輸出描述:原多項式a: 1.2+2.5x+3.2x^3-2.5x^5

原多項式b: -1.2+2.5x+3.2x^3+2.5x^5+5.4x^10

有序多項式a: -2.5x^5+3.2x^3+2.5x+1.2

有序多項式b: 5.4x^10+2.5x^5+3.2x^3+2.5x-1.

多項式相加: 5.4x^10+6.4x^3+5x

*/#include

#include

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

typedef

struct

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

polyarray;

typedef

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

polynode;

/* polynode *ha,*hb,*hc;

polyarray a= ,,,};

polyarray b= ,,,,};

createlistr(ha,a,4);

createlistr(hb,b,5);

*/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->exp

exp)

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;}

知識點總結:

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

學習心得:

運用兩個結構體定義陣列和指標,前者方便建立多項式,或者方便排序,相加,輸出和銷毀。

執行結果:

鍊錶的多項式加法鍊錶的多項式加法

老師給的模板看的我不要不要的,真心難看,看了很久才把過載加法搞定了。include using namespace std include 定義結點類 用於表示多項式的一項 class node node int nexp,int ncoef private int exp 指數 int coef ...

資料結構 多項式加法與乘法 鍊錶實現

int main t p p p link free t return p 如何讓兩個多項式相加 ploynomail polyadd polynomial p1,polynomial p2 for p1 p1 p1 link attach p1 coef,p1 expon,rear for p2 ...

資料結構 鍊錶,多項式相加

指標真的是蠻重要的,基礎不牢怨不得別人,鍊錶差點給我學自閉,尤其是資料結構演算法這塊 下面分享乙個很簡單的鍊錶應用 多項式相加 ps 多項式錄入還不完善,故只能按指數從小往大挨個順序輸入 水平較差請多諒解,應用基礎 c 雖然可讀性不高但耐心點初學者應該都能讀懂 1.面向結構的程式語言 將程式按照功能...