資料結構與演算法 數學應用之一元多項式

2022-02-24 22:14:48 字數 1871 閱讀 7004

一元多項式我們在本子上可以說是手到拈來,但是在電腦上用語言敲出來,估計這會讓很多人頭疼,比如下面的多項式

y1 = 9x^1  + 4x^3 + 6x^4

y2 = 2x^3 + 4x^4 + 3x^7 + 3x^8

yz = y1 + y2 ;

效果圖

建立乙個結構體,裡面只存連個數,乙個是係數data,乙個是次冪,至於x就不用存了,只在列印的時候寫上就ok了,

然後寫插入操作,注意一定要是有序的,方便在後期相加

兩個多項式相加就是合併,我們可以按照順序兩兩比較,先拿y1的第乙個數和y2第乙個比較,如果y1>y2,則把y2新增到yz,相反之,如果y1=y2則相加係數,按照y1(也可y2)加入yz,等全都比較過後,如果y1(y2)還有項的話,就把剩下的全都載入到yz中,其實就是直接把next指向y1(y2)即可。

定義乙個結構體型別

在slinkonez呼叫變數是,都是

l->data;l->next;的形式

typedef struct

slinkone slinkone, *slinkonez;

/*

*c * 初始化

* */

slinkonez initlink()

l->next =null;

return

l;}

/*

* * 插入

* */

int insertlink(slinkonez &l, int pos, int e, int

cimi)

if (!p || i > pos-1

)

//建立乙個新的結點,並賦值

slinkonez s = (slinkonez) malloc(sizeof

(slinkone));

s->data =e;

s->cimi =cimi;

s->next = p->next;

p->next =s;

printf(

"插入成功\n");

return0;

}

注意:我在這裡面加入了幾個判斷,乙個是當p->next ==null時,後面的加號就不要了,如果次冪==0的話那就只列印係數,當然如果係數==0,那就不列印,下方並未給出。

/*

* * 列印全部資料

* */

void

printl(slinkonez l)

while

(p)

else

else

}p = p->next;

}printf("\n

");}

注意:pz = p1;//往下走乙個,這句話其實就相當於 pz = pz->next;

下面的全部**實現都是在我上面說的思路上一一對應的,只要有思路,問題就已經解決了一半了,

/*

* * 合併

* */

slinkonez mergelink(slinkonez &lz, slinkonez &l1, slinkonez &l2)

else

if (p1->cimi > p2->cimi)

else

p1=p1->next;

p2=p2->next;}}

if (p1!=null)

if (p2!=null)

return

lz;}

int

main()

資料結構與演算法 陣列(一)

資料結構與演算法是計算機發展的基石,現代計算機的起源是數學,數學的核心是演算法,計算機歷史上每一次大的變革都離不開演算法的推動。縱然 條條大路通羅馬 但好的演算法永遠比提高硬體裝置管用。在排序陣列中,找出給定數字出現的次數。如,1,2,2,2,3 中2出現的次數是3次。簡單粗暴的方法是從頭到尾遍歷一...

資料結構與演算法之一

電腦科學是通過使用計算機解決各種問題的研究領域。為了使用計算機解決給出的問題,您需要為其設計演算法。可設計多個演算法來解決特定的問題。提供了最大效率的演算法應用於解決此問題。演算法的效率可通過使用合適的資料結構來改善。資料結構幫助建立簡單 可重用和易於維護的程式。本模組允許學員選擇並實現合適的資料結...

資料結構實驗之一元多項式相加

實驗內容 結合書上第41頁的例子,採用鏈式儲存結構,將兩個線性鍊錶表示的一元多項式相加,並輸出。此一元多項式遵循多項式相加運算規則 對於兩個一元多項式中存在指數相同的項時,其對應係數相加。合併後係數和為零時,刪除 和多項式 中此項 合併後係數和不為零時,則構成 和多項式 中的一項。對於兩個一元多項式...