




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.1.1設計內容及要求1)設計內容(1)使用順序存儲結構實現多項式加、減、乘運算。例如:,求和結果:(2)使用鏈式存儲結構實現多項式加、減、乘運算,求和結果:2)設計要求(1)用C語言編程實現上述實驗內容中的結構定義和算法。(2)要有main()函數,并且在main()函數中使用檢測數據調用上述算法。(3)用switch語句設計如下選擇式菜單。 *數據結構綜合性實驗* *一、多項式的加法、減法、乘法運算* * 1.多項式創建 * * 2.多項式相加 * * 3.多項式相減 * 4.多項式相乘 * 5.清空多項式 * 0.退出系統 * 請選擇(05) *請選擇(0-5):1.2數據結構設計根據下
2、面給出的存儲結構定義:#define MAXSIZE 20 /定義線性表最大容量 /定義多項式項數據類型typedef structfloat coef; /系數int expn; /指數 term,elemType;typedef structterm termsMAXSIZE; /線性表中數組元素int last; /指向線性表中最后一個元素位置 SeqList;typedef SeqList polynomial;1.3基本操作函數說明 polynomial*Init_Polynomial();/初始化空的多項式int PloynStatus(polynomial*p)/判斷多項式的狀態
3、 int Location_Element(polynomial*p,term x)在多項式p中查找與x項指數相同的項是否存在int Insert_ElementByOrder(polynomial*p,term x)/在多項式p中插入一個指數項xint CreatePolyn(polynomial*P,int m)/輸入m項系數和指數,建立表示一元多項式的有序表pchar compare(term term1,term term2)/比較指數項term1和指數項term2polynomial*addPloyn(polynomial*p1,polynomial*p2)/將多項式p1和多項式p2
4、相加,生成一個新的多項式polynomial*subStractPloyn(polynomial*p1,polynomial*p2)/多項式p1和多項式p2相減,生成一個新的多項式polynomial*mulitPloyn(polynomial*p1,polynomial*p2)/多項式p1和多項式p2相乘,生成一個新的多項式void printPloyn(polynomial*p)/輸出在順序存儲結構的多項式p1.4程序源代碼#include#include#include#define NULL 0#define MAXSIZE 20typedef structfloat coef;int
5、 expn;term,elemType;typedef structterm termsMAXSIZE;int last;SeqList;typedef SeqList polynomial;void printPloyn(polynomial*p);int PloynStatus(polynomial*p)if(p=NULL)return -1;else if(p-last=-1)return 0;elsereturn 1;polynomial*Init_Polynomial()polynomial*P;P=new polynomial;if(P!=NULL)P-last=-1;return
6、 P;elsereturn NULL;void Reset_Polynomial(polynomial*p)if(PloynStatus(p)=1)p-last=-1;int Location_Element(polynomial*p,term x)int i=0;if(PloynStatus(p)=-1)return 0;while(ilast & p-termsi.expn!=x.expn)i+;if(ip-last)return 0;elsereturn 1;int Insert_ElementByOrder(polynomial*p,term x)int j;if(PloynStatu
7、s(p)=-1)return 0;if(p-last=MAXSIZE-1)coutThe polym is full!last;while(p-termsj.expn=0) p-termsj+1=p-termsj; j-; p-termsj+1=x;p-last+;return 1;int CreatePolyn(polynomial*P,int m)float coef;int expn;term x;if(PloynStatus(P)=-1)return 0;if(mMAXSIZE)printf(順序表溢出n);return 0;elseprintf(請依次輸入%d對系數和指數.n,m);
8、for(int i=0;iterm2.expn)return;else if(term1.expnterm2.expn)return;elsereturn=;polynomial*addPloyn(polynomial*p1,polynomial*p2)int i,j,k;i=0;j=0;k=0;if(PloynStatus(p1)=-1)|(PloynStatus(p2)=-1)return NULL;polynomial*p3=Init_Polynomial();while(ilast & jlast)switch(compare(p1-termsi,p2-termsj)case:p3-t
9、ermsk+=p1-termsi+;p3-last+;break;casetermsk+=p2-termsj+;p3-last+;break;case=:if(p1-termsi.coef+p2-termsj.coef!=0)p3-termsk.coef=p1-termsi.coef+p2-termsj.coef;p3-termsk.expn=p1-termsi.expn;k+;p3-last+;i+;j+;while(ilast)p3-termsk+=p1-termsi+;p3-last+;return p3;polynomial*subStractPloyn(polynomial*p1,p
10、olynomial*p2)int i;i=0;if(PloynStatus(p1)!=1)|(PloynStatus(p2)!=1)return NULL;polynomial*p3=Init_Polynomial();p3-last=p2-last;for(i=0;ilast;i+)p3-termsi.coef=-p2-termsi.coef;p3-termsi.expn=p2-termsi.expn;p3=addPloyn(p1,p3);return p3;polynomial*mulitPloyn(polynomial*p1,polynomial*p2)int i;int j;int k
11、;i=0;if(PloynStatus(p1)!=1)|(PloynStatus(p2)!=1)return NULL;polynomial*p3=Init_Polynomial();polynomial*p=new polynomial*p2-last+1;for(i=0;ilast;i+)for(k=0;klast;k+)pk=Init_Polynomial();pk-last=p1-last;for(j=0;jlast;j+)pk-termsj.coef=p1-termsj.coef*p2-termsk.coef;pk-termsj.expn=p1-termsj.expn+p2-term
12、sk.expn;p3=addPloyn(p3,pk);return p3;void printPloyn(polynomial*p)int i;for(i=0;ilast;i+)if(p-termsi.coef0 & i0)cout+termsi.coef;elsecouttermsi.coef;coutxtermsi.expn;coutendl;void menu()couttt*數據結構綜合性實驗*endl;couttt*一、多項式的加、減、乘法運算*endl;couttt* 1.多項式創建 *endl;couttt* 2.多項式相加 *endl;couttt* 3.多項式相減 *endl
13、;couttt* 4.多項式相乘 *endl;couttt* 5.清空多項式 *endl;couttt* 0.退出系統 *endl;couttt* 請選擇(0-5) *endl;couttt*endl;void main()int sel;polynomial*p1=NULL;polynomial*p2=NULL;polynomial*p3=NULL;while(1)menu();coutsel;switch(sel)case 1:p1=Init_Polynomial();p2=Init_Polynomial();int m;printf(請輸入第一個多項式的項數:n);scanf(%d,&m);CreatePolyn(p1,m);printf(第一個多項式的表達式為p1=);printPloyn(p1);printf(請輸入第二個多項式的項數:n);scanf(%d,&m);CreatePolyn(p2,m);printf(第二個多項式的表達式為p2=);printPloyn(p2);break;case 2:printf(p1+p2=);if(p3=subStractPloyn(p1,p2)!=NULL)printPloyn(p3);break;case 3:printf(np1-p2=);if(p3=subStr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態脆弱區保護與恢復策略考核試卷
- 鹽湖區水資源分配與供給保障考核試卷
- 無線電頻率共用與協調考核試卷
- 苗木保密協議樣本
- 潛水裝備在海洋漁業資源的可持續利用考核試卷
- 紡織機械性能優化策略考核試卷
- 染料在新能源電池材料中的應用考核試卷
- 稀土金屬礦床開采過程中的環境保護法規執行考核試卷
- 安全教育預防火災
- 小學生教育故事:誠信與成長的啟迪
- 腦電圖判讀異常腦電圖
- 人體所需的七大營養素(卓越)
- 《小學生預防溺水安全教育班會》課件
- 傳統園林技藝智慧樹知到期末考試答案2024年
- 直播中的禮儀與形象塑造
- 2024年八年級數學下冊期中檢測卷【含答案】
- 老年人中醫健康知識講座總結
- 海南聲茂羊和禽類半自動屠宰場項目環評報告
- 跳繩市場調研報告
- 《民法典》合同編通則及司法解釋培訓課件
- 交通事故法律處理與索賠案例分析與實踐指導
評論
0/150
提交評論