資料結構實踐教程 線性表(一元多項式相加)

2021-10-25 01:18:22 字數 2508 閱讀 4408

一、實驗要求

使用者根據自己的需求輸入兩個一元多項式,要求能夠顯示輸入的一元多項式,再將這兩個一元多項式相加,輸出結果。

二、**實現

#include

#include

#include

#include

#include

using namespace std;

typedef

struct plnodeplnode;

typedef plnode *plinklist;

void

createpolyn

(plinklist &spolyn)

//建立空鍊錶

void

listinsert

(plinklist spolyn,plnode snewnode)

bool getint

(int

&value)

;fflush

(stdin);

//清空緩衝區

gets

(str)

;//等待輸入資料,並將資料存到str中

unsigned

int index=1;

int ntemp=0;

if(str[0]

=='-'

)//判斷是否為負數

ntemp=1;

for(index=ntemp;index<

strlen

(str)

;index++

)//判斷輸入的字串是否合理

value=

atoi

(str)

;//將字串轉化為整數

return true;

}void

printpoly

(plnode sptemp)

else

if(sptemp.dbcoef==-1

)//係數為-1時

else

}void

printpolyn

(plinklist spolyn)

else

printpoly

(*sptemp)

; sptemp=sptemp->next;}}

//多項式按指數從小到大排序

plinklist listsort

(plinklist spolyn)}}

return spolyn;

}void

inputdata

(int norder,plinklist &spolyn)

while

(n<0)

; plnode snewnode;

//定義新結點

double dbcoef;

int nexpn;

int expn[n]

;for

(int i=

0;i)while

(cin.

fail()

||dbcoef==0)

; cout<<

"請輸入第"

<

1<<

"項的指數:"

;getint

(nexpn)

;//cout

expn[i]

=nexpn;

//使用陣列記錄之前輸入的指數

for(

int j=

0;j1;j++)if

(nexpn==expn[j]

)//當前指數是否已輸入過,是則報錯

snewnode.dbcoef=dbcoef;

//存入資料

snewnode.nexpn=nexpn;

listinsert

(spolyn,snewnode)

;//將新結點插入多項式鍊錶的尾部}}

plinklist addpolyn

(plinklist spolyn1,plinklist spolyn2)

else

if(nex==0)

//當前結點的指數相同

spolyn1temp=spolyn1temp->next;

spolyn2temp=spolyn2temp->next;

//移動結點

}else

} plinklist spolyntemp;

createpolyn

(spolyntemp);if

(spolyn1temp)

spolyntemp=spolyn1temp;

else

spolyntemp=spolyn2temp;

while

(spolyntemp)

//鏈結剩餘結點到和鍊錶中

return spolynadd;

}void

freepolyn

(plinklist spolyn)

}int

main()

三、執行結果

資料結構(11)線性表之一元多項式表示及相加

符號多項式處理,是表處理的典型範例。而這章就是主要就本經典案例進行討論。數學上,乙個一元多項式pn x 可以按照公升冪寫成pn x p0 p 1x p 2x2 pnxn 它由n 1個係數唯一確定。因此在計算機裡面,它可以由乙個線性表p來表示 p p0,p1,p 2,pn 每一項的指數i隱含在其係數p...

線性表 一元多項式的運算

polylist polycreate polylist head rear next null return head 思路 將兩個多項式從頭掃瞄,指數相同項相加,如果為0則釋放該空間,如果非0則構成一項,最終指數不同的項按指數公升序排列。用變數p q分別指向鏈a b中的第一結點,把結果存放在a中...

資料結構 一元多項式

void initlist polynode l 初始化多項式單鏈表 int getlength polynode l 求多項式單鏈表的長度 polynode getelem polynode l,int i 返回多項式單鏈表中第i個結點的指標 polynode locate polynode l,...