完整版一元多項式求和試驗報告_第1頁
完整版一元多項式求和試驗報告_第2頁
完整版一元多項式求和試驗報告_第3頁
完整版一元多項式求和試驗報告_第4頁
完整版一元多項式求和試驗報告_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實驗一、線性結(jié)構(gòu)綜合應(yīng)用一、實驗題目:順序表的應(yīng)用二、實驗內(nèi)容:一元多項式求和.把任意給定的兩個一元多項式P(x) ,Q(x)輸入計算機,計算它們的和并輸出計算結(jié)果.三、設(shè)計分析:實現(xiàn)要定義的一元多項式應(yīng)采用鏈式存儲結(jié)構(gòu).根據(jù)一元多項式相加的運算法那么,對于兩個多項式中所有指數(shù)相同的項,對應(yīng)系數(shù)相加,假設(shè)其和不為零,那么構(gòu)成新多項式的一項;對于兩個多項式中所有指數(shù)不同的項,分別復(fù)制到新多項式中.新多項式不必另外生成,而是在原來的兩個多項式中摘取結(jié)點即可.采用順序存儲結(jié)構(gòu)存儲多項式系數(shù)A,使多項式的某些運算變得更簡潔.但在實際使用時,多項式的階數(shù)可能很高,不同的多項式階數(shù)可能相差很大,這使順序存

2、儲結(jié)構(gòu)的最大長度難以確定.而且,最高次藉與最低次藉項之間缺項很多時,采用順序存儲結(jié)構(gòu)顯然十分浪費存儲空間,因此,一般情況下多采用鏈式存儲結(jié)構(gòu)來存儲高階多項式.在用線性鏈表來存儲一個多項式時,多項式中的每個非零項系數(shù)對應(yīng)一個結(jié)點,結(jié)點由數(shù)據(jù)元素項和指針組成.數(shù)據(jù)元素項中包含系數(shù)和指數(shù)值,設(shè)計中先定義定義數(shù)據(jù)元素中的數(shù)據(jù),其中有指數(shù)、系數(shù)級指針next等.并要先構(gòu)造一元多項式.在定義輸出、刪除、合并等模塊.假設(shè)指針qa和qb分別指向多項式 A和B中當前進行操作的某個結(jié)點,比較這個結(jié)點的指數(shù)項,可能有三種情況: 指針qa->exp<qb->exp,那么摘取qa指針所指結(jié)點插入到和多

3、項式中; 指針qa->exp<qb->exp,那么摘取qb指針所指結(jié)點插入到和多項式中; 指針qa->exp=qb->exp,那么將系數(shù)相加,假設(shè)和數(shù)不為零,那么修改 qa->coef的值,同時釋放qb所指結(jié)點,反之,從多項式A的鏈表中刪除相應(yīng)的結(jié)點,并釋放指針Pa和Pb所指結(jié)點;還有就是在輸入是采取的降序輸入,也好使兩個多項式進行合并.并輸出.在主函數(shù)中將前面也的這些功能都運用起來就可以了四、程序代碼:#include<iostream>#define NULL 0using namespace std;typedef struct Polyn

4、omial系數(shù)指數(shù)輸入m項的系數(shù)和指數(shù),建立一元多項式float coef; / int exp; /struct Polynomial *next; Polynomial;Polynomial *CreatPolyn() (/float mod; int ind;Polynomial *H,*p,*s; H=new Polynomial;s=H;cout<<"請輸入多項式的系數(shù)和指數(shù):按0結(jié)束輸入"<<endl;cin>>mod>>ind;while(mod)(p=(Polynomial *)new Polynomial;

5、p->coef=mod;p->exp=ind;s->next=p;s=p;cin>>mod>>ind;s->next=NULL;return H;void Print(Polynomial *pa)(/打印輸出一元多項式pwhile(pa->next!=NULL) (pa=pa->next;cout<<pa->coef<<"*xA"<<pa->exp;if(pa->next!=NULL&&pa->next->coef>0)cou

6、t<<"+"void Delete(Polynomial *pa)(/刪除一元多項式Polynomial *p,*q;p=pa->next;while(p)(q=p;p=p->next;delete q;pa->next=NULL;void AddPolyn(Polynomial *pa,Polynomial *pb)(/用于鏈表的合并使用完成多項式的相加運算float sum;Polynomial *p,*q,*pre,*temp;p=pa->next;q=pb->next;pre=pa;while(p!=NULL&&am

7、p;q!=NULL)(if(p->exp>q->exp)(pre->next=p;pre=pre->next;p=p->next;else if(p->exp=q->exp)(sum=p->coef+q->coef;if(sum!=0) p->coef=sum;pre->next=p;pre=pre->next;p=p->next;temp=q;q=q->next;delete temp;elsetemp=p->next;delete p;p=temp;temp=q->next;delete

8、q;q=temp;elsepre->next=q;pre=pre->next;q=q->next;將多項式A中剩余的結(jié)點參加到和多項式中 if(p!=NULL) / pre->next=p;else pre->next=q; int main()int c;int t=1;while(t)cout<<*菜單*、"<<endl<<endl;cout<<1.創(chuàng)立并顯示一元多項式A和B,計算一元多項式A加B并顯示和"<<endl<<endl;cout<<2.退出程序.<<endl;cin>>c;switch(c)case "Polynomial *p1,*p2;p1=CreatPolyn();cout<< 一元多項式 A是:"Print(p1);cout<<endl;p2=CreatPolyn();cout<< 一元多項式 B是:"Print(p2);cout<<endl;AddPolyn(p1,p2);cout<<" 一元多項式 A加B的和是:"Print(p1);cout<<endl;Dele

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論