版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 課程設(shè)計報告設(shè)計名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 設(shè)計題目: 兩個高次多項(xiàng)式的加法和乘法 學(xué)生學(xué)號: 1402120135 專業(yè)班級: 軟件工程1班 軟件學(xué)院課程設(shè)計任務(wù)書學(xué)生姓名 學(xué)號1402120135專業(yè)班級軟件工程1班設(shè)計題目任意兩個高次多項(xiàng)式的加法和乘法運(yùn)算內(nèi)容概要: 設(shè)計或開發(fā)環(huán)境:Microsoft Visual Studio 2010 關(guān)鍵技術(shù):C+語言 主要功能: 1建立一元多次多項(xiàng)式 2高次多項(xiàng)式相加 3高次多項(xiàng)式相乘 文獻(xiàn)資料:1譚浩強(qiáng)C語言程序設(shè)計(第三版) 清華大學(xué)出版社 20072姜敏芝 余健 C語言程序設(shè)計案例精編 清華大學(xué)出版社 20083李健學(xué) 余健 數(shù)據(jù)結(jié)構(gòu)課程設(shè)
2、計案例精編 20074唐國民 王國均數(shù)據(jù)結(jié)構(gòu)(C語言版) 清華大學(xué)出版社5韓利凱 李軍 數(shù)據(jù)結(jié)構(gòu) 浙江大學(xué)出版社 20136網(wǎng)上相關(guān)文獻(xiàn)資料設(shè)計要求:A.功能要求1)輸入并建立多項(xiàng)式;2)輸出多項(xiàng)式;3)兩個多項(xiàng)式相加,輸出和多項(xiàng)式;4)兩個多項(xiàng)式相乘,輸出積多項(xiàng)式。B.文檔格式*.cpp工作期限:設(shè)計工作自2014年6月16日至2014年6月27日止。指導(dǎo)教師: 韓利凱 院長: 日 期:2014年6月16日軟件學(xué)院課程設(shè)計進(jìn)度安排表 起止日期內(nèi) 容備注6月16日 6月 17日下任務(wù)書;收集、閱讀、整理相關(guān)參考文獻(xiàn),并進(jìn)行歸納和概括總結(jié),完成項(xiàng)目/任務(wù)背景介紹部分文字內(nèi)容。6月18日11月20
3、日系統(tǒng)功能設(shè)計和模塊設(shè)計、系統(tǒng)體系結(jié)構(gòu)構(gòu)建。6月21日6月24日各功能模塊編碼實(shí)現(xiàn),系統(tǒng)各功能模塊調(diào)試與維護(hù)。6月25日6月26日系統(tǒng)功能集成、系統(tǒng)調(diào)試與測試,按照模板要求撰寫課程設(shè)計/項(xiàng)目設(shè)計報告。6月27日課程設(shè)計/項(xiàng)目設(shè)計分組答辯,提交課程設(shè)計/項(xiàng)目設(shè)計報告以及相關(guān)文檔,進(jìn)行成績評定。指導(dǎo)教師簽名: 2014年6月16日摘 要摘要:本課程設(shè)計主要解決任意兩個高次多項(xiàng)式的乘法運(yùn)算。所設(shè)計的數(shù)據(jù)結(jié)構(gòu)應(yīng)盡可能節(jié)省存儲空間,程序的運(yùn)行時間應(yīng)盡可能少。從題目看出所設(shè)計的程序應(yīng)能達(dá)到的功能,設(shè)計好的程序要滿足以上兩點(diǎn)。在數(shù)據(jù)輸入方面可以根據(jù)一元高次多項(xiàng)式的特征,從左到右開始,按每一項(xiàng)指數(shù)、系數(shù)的順序
4、輸入。這里要留意一個問題,因?yàn)橐喑说亩囗?xiàng)式項(xiàng)數(shù)是未知的,所以選擇什么樣的存儲方式在本課程設(shè)計中尤為重要,這也是本程序好壞的一個評定。程序通過調(diào)試運(yùn)行,初步實(shí)現(xiàn)了設(shè)計目標(biāo),并且經(jīng)過適當(dāng)完善后,將可以應(yīng)用在商業(yè)中解決實(shí)際問題。關(guān)鍵詞:高次多項(xiàng)式;加法;乘法;時間復(fù)雜度;空間復(fù)雜度目 錄目 錄I第一章 課題背景21.1 緒論21.2 主要內(nèi)容2第二章 設(shè)計簡介及設(shè)計方案論述32.1 系統(tǒng)分析32.1.1 功能需求32.1.2 數(shù)據(jù)需求32.1.3 系統(tǒng)需求32.2 總體設(shè)計32.2.1 系統(tǒng)設(shè)計方案32.2.2 功能模塊設(shè)計4第三章 詳細(xì)設(shè)計53.1 主要流程圖53.2 鏈表模塊63.3 加法模塊
5、83.4 乘法模塊10第四章 設(shè)計結(jié)果及分析124.1 調(diào)試與測試124.1.1 調(diào)試124.1.2 測試124.1.3 運(yùn)行界面134.2 結(jié)果分析13總結(jié)14參考文獻(xiàn)15附錄16第一章 課題背景1.1 緒論隨著科技的進(jìn)步,社會的不斷發(fā)展,計算器已普遍應(yīng)用于各行各業(yè),為了幫助人們提高工作效率,節(jié)約運(yùn)算時間,設(shè)計一個多功能的計算器是很有必要的,在此設(shè)計一個高次多項(xiàng)式計算器可以很方便的對多項(xiàng)式相加、相減、相乘,對提高人們的運(yùn)算效率很有幫助。這樣一個程序需要用到C+多方面的知識,要實(shí)現(xiàn)多項(xiàng)式的建立和輸入輸出等功能,必須要熟練的掌握C+,在此尤其是鏈表的靈活運(yùn)用和結(jié)點(diǎn)特點(diǎn)。1.2 主要內(nèi)容用C+語言
6、實(shí)現(xiàn)多項(xiàng)式的輸入輸出和多項(xiàng)式的加減乘等運(yùn)算,其中主要用到鏈表和結(jié)點(diǎn)的相關(guān)知識,具體功能如下:1)輸入并建立多項(xiàng)式;2)輸出多項(xiàng)式;3)兩個多項(xiàng)式相加,輸出和多項(xiàng)式;4)兩個多項(xiàng)式相減,輸出差多項(xiàng)式。第二章 設(shè)計簡介及設(shè)計方案論述2.1 系統(tǒng)分析2.1.1 功能需求 實(shí)現(xiàn)任意兩個高次多項(xiàng)式的加法和乘法2.1.2 數(shù)據(jù)需求在輸入過程中,首先要給定輸入的數(shù)據(jù),數(shù)據(jù)只能是數(shù)字,不能是字母或其他,不能連續(xù)輸入數(shù)據(jù),必須要求以空格分開要輸入的數(shù)據(jù)。2.1.3 系統(tǒng)需求系統(tǒng)必須安全可靠,不會出現(xiàn)無故死機(jī)狀態(tài),運(yùn)算速度要快。2.2 總體設(shè)計2.2.1 系統(tǒng)設(shè)計方案用戶輸入高次多項(xiàng)式系數(shù)和指數(shù),用單鏈表儲存你輸
7、入的數(shù)據(jù),輸出兩個多項(xiàng)式相加和相乘之后的結(jié)果。(1) 數(shù)據(jù)結(jié)構(gòu)的選擇本程序選擇的數(shù)據(jù)結(jié)構(gòu)是單鏈表,原因如下:當(dāng)需要插入數(shù)據(jù)元素時,臨時動態(tài)地為其申請一個存儲空間,而不是將結(jié)點(diǎn)放在一個定義的數(shù)組中,刪除數(shù)據(jù)元素時,可以釋放該數(shù)據(jù)元素所占用的空間,即可以根據(jù)表的實(shí)際需要臨時動態(tài)的分配存儲空間以存儲表中的數(shù)據(jù)元素。單鏈表是有限個具有相同數(shù)據(jù)類型的數(shù)據(jù)元素組成的鏈表且該鏈表的每一個結(jié)點(diǎn)只有一個指針域。帶頭結(jié)點(diǎn)的單鏈表是在單鏈表的第一個結(jié)點(diǎn)之前加一個同類型的結(jié)點(diǎn),目的是為了使鏈表有一致的描述。本程序解決的是兩多項(xiàng)式相乘的問題,多項(xiàng)式的項(xiàng)數(shù)本身就是不確定的,而且相乘后的多項(xiàng)式可能含有指數(shù)相同的問題,這時就
8、需要合并,合并后其中的一項(xiàng)就沒有用了需要刪除,不然就浪費(fèi)內(nèi)存空間。基于以上幾點(diǎn)所以采用了鏈表。鏈表具有動態(tài)生成,靈活添加或刪除結(jié)點(diǎn)的特點(diǎn),盡可能節(jié)省存儲空間。(2) 文件保存方式運(yùn)用帶頭節(jié)點(diǎn)的單鏈表儲存多項(xiàng)式。(3) 抽象數(shù)據(jù)類型定義主要定義多項(xiàng)式的系數(shù)和指數(shù),系數(shù)項(xiàng)和指數(shù)項(xiàng)均用整型定義。(4) 存儲結(jié)構(gòu)采用鏈?zhǔn)浇Y(jié)構(gòu),建立鏈表儲存輸入的多項(xiàng)式(5) 算法設(shè)計先將兩個已知的多項(xiàng)式的指數(shù)和系數(shù)存放在指定鏈表中在執(zhí)行乘法運(yùn)算。乘法運(yùn)算的過程是將A 式中的第一項(xiàng)與B 式的每一項(xiàng)相乘,在將A 式的第二項(xiàng)與B 式的每一項(xiàng)相乘,依次下去直到A 式的所有項(xiàng)與B 式乘完為止。將相乘后所得的指數(shù)、系數(shù)存在預(yù)先建好
9、的C 鏈表中。 C 鏈表中如果有指數(shù)相同的項(xiàng)就需要合并,合并時將結(jié)果放在前一個項(xiàng)中,將后一項(xiàng)刪除。首先定義3個指針,x、y、z,x、y 指向首元素結(jié)點(diǎn)z 指向第二個結(jié)點(diǎn),用z 結(jié)點(diǎn)中指數(shù)項(xiàng)與x 結(jié)點(diǎn)的指數(shù)項(xiàng)比較,如果不同指針z 向后移,若相同則將z 結(jié)點(diǎn)的系數(shù)加到x 上去然后將z 所在結(jié)點(diǎn)空間釋放,并且指針z 后移。直到指針z 指向空后,將指針x 后移一項(xiàng),并令z 指向x 的下一項(xiàng),然后按上述步驟依次執(zhí)行,直到x 指向空結(jié)束。這里指針y 是z 的前驅(qū)結(jié)點(diǎn)他的作用是合并后結(jié)點(diǎn)空間釋放結(jié)點(diǎn)空間將此結(jié)點(diǎn)的前后兩項(xiàng)鏈接起來。本程序核心部分全部是運(yùn)用while 循環(huán)語句實(shí)現(xiàn)的。2.2.2 功能模塊設(shè)計高
10、次多項(xiàng)式加法和乘法加法模塊乘法模塊輸出模塊輸入模塊鏈表模塊圖 2-1 功能模塊第三章 詳細(xì)設(shè)計多項(xiàng)式的建立主要需要建立新鏈表,并分配給這個新鏈表一定量的存儲空間,分配的存儲空間內(nèi)進(jìn)行運(yùn)算;多項(xiàng)式加減乘等運(yùn)算主要運(yùn)用了鏈表的建立,鏈表存儲空間分配,鏈表的查找,插入與連接進(jìn)行計算。3.1 主要流程圖此階段是程序構(gòu)建的思路,是本程序的結(jié)構(gòu)圖,同時也體現(xiàn)出本程序?qū)⒁_(dá)到的功能,如圖 3-1所示: 輸入任意兩個高次 多項(xiàng)式的系數(shù)、指數(shù)值 將輸入值分別儲存 在兩個動態(tài)鏈表中 將相乘和相加的 結(jié)果存入C鏈表 將存放相乘多項(xiàng)式的各項(xiàng) 系數(shù)指數(shù)的鏈表置空 若有指數(shù)相同 的項(xiàng)合并 輸出兩個要進(jìn)行 運(yùn)算的多項(xiàng)式 輸
11、出結(jié)果圖 3-1 主流程圖3.2 鏈表模塊此階段是程序中鏈表的主要流程,如圖 3-2所示: Start list<term> Poly_add(list<term>&poly_list_first, list<term>&poly_list_second) list<term>:iterator iter_first = poly_list_first.begin();list<term>:iterator iter_second = poly_list_second.begin(); iter_first!=poly
12、_list_first.end() && iter_second != poly_list_second.end() term t_first = (term)*iter_first; term t_second = (term)*iter_second; t_first.exp>t_second.exp poly_list_result.push_back(t_first); iter_first+; t_second.exp> t_first.exp poly_list_result.push_back (t_second);iter_second+; t_te
13、mp.coef=t_first.coef +t_second.coef;t_temp. exp=t_first.coef;End圖 3-2 鏈表結(jié)構(gòu)圖主要代碼如下:list<term> Poly_add(list<term>&poly_list_first,list<term>&poly_list_second) list<term> poly_list_result;/用以存儲運(yùn)算結(jié)果 list<term>:iterator iter_first = poly_list_first.begin(); list<
14、term>:iterator iter_second = poly_list_second.begin(); /*該while循環(huán)針對兩個鏈表迭代器都沒有指到結(jié)尾的情形*/ while (iter_first != poly_list_first.end() && iter_second != poly_list_second.end() term t_temp; term t_first = (term)*iter_first; term t_second = (term)*iter_second; if (t_first.exp>t_second.exp) po
15、ly_list_result.push_back(t_first); iter_first+; else if (t_second.exp>t_first.exp) poly_list_result.push_back(t_second); iter_second+; else t_temp.coef = t_first.coef + t_second.coef; t_temp.exp = t_first.coef; poly_list_result.push_back(t_temp); iter_first+; iter_second+; /該for循環(huán)針對第一個多項(xiàng)式的迭代器沒有指到
16、結(jié)尾 for (;iter_first != poly_list_first.end();iter_first+) poly_list_result.push_back(*iter_first); /該for循環(huán)針對第二個多項(xiàng)式的迭代器沒有指到結(jié)尾 for (; iter_second != poly_list_second.end(); iter_second+) poly_list_result.push_back(*iter_second); return poly_list_result; 3.3 加法模塊此階段是程序中加法模塊的主要流程,如圖 3-3所示: Start list<
17、;term>:iterator iter_first = m_poly_list_first.begin();list<term>:iterator iter_second = m_poly_list_second.begin(); iter_first != m_poly_list_ first.end()&&iter_second!=m_poly_list_ second.end() term t_first = (term)*iter_first; term t_second = (term)*iter_second; t_first.exp>t_
18、second.exp m_poly_list_result.push_back(t_first); iter_first+; t_second.exp>t_first.exp m_poly_list_result.push_back (t_second);iter_second+; t_temp.coef=t_first.coef+t_second.coef; t_temp.exp=t_first.exp; m_poly_list_result.push_back(t_temp); iter_first+;iter_second+;iter_first!=m_poly_list_firs
19、t.end()m_poly_list_result.push_back(*iter_first);iter_first+;iter_second!=m_poly_list_second.end()m_poly_list_result.push_back(*iter_second);iter_second+;End圖 3-3 加法模塊結(jié)構(gòu)主要代碼如下:void Poly_add()list<term>:iterator iter_first = m_poly_list_first.begin();list<term>:iterator iter_second = m_po
20、ly_list_second.begin();while (iter_first != m_poly_list_first.end() && iter_second != m_poly_list_second.end()term t_temp;term t_first = (term)*iter_first;term t_second = (term)*iter_second;if(t_first.exp>t_second.exp)m_poly_list_result.push_back(t_first);iter_first+;else if(t_second.exp&
21、gt;t_first.exp)m_poly_list_result.push_back(t_second);iter_second+;elset_temp.coef = t_first.coef + t_second.coef;t_temp.exp = t_first.exp;m_poly_list_result.push_back(t_temp);iter_first+;iter_second+;for(;iter_first != m_poly_list_first.end(); iter_first+)m_poly_list_result.push_back(*iter_first);f
22、or (;iter_second != m_poly_list_second.end(); iter_second+)m_poly_list_result.push_back(*iter_second);3.4 乘法模塊此階段是程序中乘法模塊的主要流程,如圖 3-4所示:Startlist<term> poly_list_result;list<term>:iterator iter_first = m_poly_list_first.begin();iter_first != m_poly_list_first.end()list<term> poly_l
23、ist_temp;list<term>:iterator iter_second=m_poly_list_second.begin();iter_first+iter_second != m_poly_list_second.end();term t_first = (term)*iter_first;term t_second = (term)*iter_second;t_temp.coef = t_first.coef*t_second.coef;t_temp.exp = t_first.exp + t_second.exp;poly_list_temp.push_back(t
24、_temp);poly_list_result = Poly_add(poly_list_temp, poly_list_result);m_poly_list_result = poly_list_result;End圖3-4 乘法模塊結(jié)構(gòu)主要代碼如下:void Poly_multi()list<term> poly_list_result;list<term>:iterator iter_first = m_poly_list_first.begin();for (; iter_first != m_poly_list_first.end(); iter_first
25、+)list<term> poly_list_temp; /用以存儲多項(xiàng)式的中間運(yùn)算結(jié)果 list<term>:iterator iter_second=m_poly_list_second.begin();for (;iter_second != m_poly_list_second.end();iter_second+)term t_temp; /用以存儲項(xiàng)的中間運(yùn)算結(jié)果 term t_first = (term)*iter_first;term t_second = (term)*iter_second;/此處實(shí)現(xiàn)多項(xiàng)式項(xiàng)的相乘 t_temp.coef = t_f
26、irst.coef*t_second.coef; /系數(shù)相乘 t_temp.exp = t_first.exp + t_second.exp; /指數(shù)相加 poly_list_temp.push_back(t_temp);/此處調(diào)用私有成員函數(shù)Poly_add()poly_list_result = Poly_add(poly_list_temp, poly_list_result);/將運(yùn)算結(jié)果賦值給私有數(shù)據(jù)成員,用以輸出 m_poly_list_result = poly_list_result;第四章 設(shè)計結(jié)果及分析4.1 調(diào)試與測試4.1.1 調(diào)試調(diào)試過程主要是運(yùn)行編制好的程序,然后遇
27、到錯誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問題所在。本系統(tǒng)調(diào)試過程中遇到的主要問題、原因和解決方法如下面介紹。Error C2065:coef:undeclared identifierCoef沒有明確被定義回到程序中查找并改正,發(fā)現(xiàn)調(diào)用的變量沒有在同一類中4.1.2 測試軟件測試是軟件生存期中的一個重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應(yīng)該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程”。或者說,軟件測試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運(yùn)行程序,以發(fā)
28、現(xiàn)程序錯誤或缺陷。過度測試則會浪費(fèi)許多寶貴的資源。到測試后期,即使找到了錯誤,然而付出了過高的代價。測試數(shù)據(jù)過程如下:第一個多項(xiàng)式的項(xiàng)數(shù):3第1項(xiàng)系數(shù):2指數(shù):9第2項(xiàng)系數(shù):8指數(shù):4第3項(xiàng)系數(shù):6 指數(shù):6第二個多項(xiàng)式的項(xiàng)數(shù):2第1項(xiàng)系數(shù):4指數(shù):6第2項(xiàng)系數(shù):4指數(shù):1運(yùn)行結(jié)果:第一個多項(xiàng)式為:2x9+8x4+6x6第二個多項(xiàng)式為:4x6+4x1多項(xiàng)式加法的運(yùn)算結(jié)果:2x9+4x6+8x4+6x6+4x1多項(xiàng)式乘法的運(yùn)算結(jié)果:8x15+40x32+24x12+24x7+32x54.1.3 運(yùn)行界面圖 4-1 運(yùn)行界面4.2 結(jié)果分析經(jīng)過一段時間的設(shè)計,我的程序大體完成,任務(wù)書中所要求實(shí)現(xiàn)多
29、項(xiàng)式的輸入輸出、多項(xiàng)式的加法、多項(xiàng)式的乘法都實(shí)現(xiàn)了,而但程序還存在一些缺點(diǎn),例如,系數(shù)輸入負(fù)數(shù)會加減號重復(fù),無法輸入字母計算,無法進(jìn)行多項(xiàng)連續(xù)計算,以后還需進(jìn)一步改進(jìn)??偨Y(jié)數(shù)據(jù)結(jié)構(gòu)體現(xiàn)的是解決問題的一種思想,怎樣把這種思想體現(xiàn)出來,需要我們對每個方面的系統(tǒng)了解。并發(fā)現(xiàn)了許多自己的不足,平時沒掌握的的知識在實(shí)踐中暴露,經(jīng)過不斷的思考,查閱書籍和上網(wǎng)查資料及上機(jī)運(yùn)行,解決了大部分的問題,還有一些小問題。但是,我相信在今后的學(xué)習(xí)中,一定能把它解決好。當(dāng)今計算機(jī)應(yīng)用在生活中可以說是無處不在。因此作為二十一世紀(jì)的大學(xué)生來說掌握程序開發(fā)技術(shù)是十分重要的,而C+語言又是最常見,功能最強(qiáng)大的一種高級語言,因此
30、做好C+語言版數(shù)據(jù)結(jié)構(gòu)課程設(shè)計是十分必要的。我不僅鞏固了數(shù)據(jù)結(jié)構(gòu)程序設(shè)計的內(nèi)容,掌握設(shè)計的基本方法,強(qiáng)化了上機(jī)動手能力,還進(jìn)一步掌握了以下知識:數(shù)據(jù)類型,鏈表,結(jié)點(diǎn),分支控制,循環(huán)控制,結(jié)構(gòu)體及數(shù)組,指針,文件操作,編譯預(yù)處理等;通過課程設(shè)計,掌握了程序的局部測試,調(diào)試方法,建立程序系統(tǒng)調(diào)試,測試的基本概念和思想,學(xué)會較大程序的系統(tǒng)測試和調(diào)試方法。當(dāng)我選擇這個多項(xiàng)式計算器系統(tǒng)時,首先系統(tǒng)分析主要思路和框架哦,與同學(xué)討論,聯(lián)系所學(xué)的知識。我知道書上和老師講的有限,所以上網(wǎng)搜也是一種利用資源的表現(xiàn)。在編程中,特別是結(jié)構(gòu)體,指針的部分,幾乎是一片空白。不過經(jīng)過幾天的努力,大體把課本上的知識點(diǎn)看了一遍
31、,知識點(diǎn)也基本上掌握了,所以下一步就是開始正式的編程序了。當(dāng)讀懂了C+語言編程的基本過程和方法,經(jīng)過一波三折,終于開始正式編程。 編譯過程中,算法至關(guān)重要,多項(xiàng)式加法:系數(shù)相同時指數(shù)相加,不同時兩項(xiàng)做加法;多項(xiàng)式乘法:指數(shù)相乘,系數(shù)相加,當(dāng)然在設(shè)計過程中還要注意一些特殊值,如0,1等。通過這次課程設(shè)計,我感覺到要自己動手真正做出一個程序并不很容易,但只要用心去做,總會有收獲,特別是當(dāng)我遇到問題,問老師,問同學(xué),想盡辦法去解決,最后終于找到方法時,心里的那份喜悅之情真是難以形容.編寫程序中遇到問題再所難免,應(yīng)耐心探究其中的原因,從出現(xiàn)問題的地方起,并聯(lián)系前后程序,仔細(xì)推敲,逐個排查.直到最終搞清
32、為止。在課程設(shè)計過程中,收獲知識,提高能力的同時,我也學(xué)到了很多的人生哲理,懂得了怎么去制定計劃,怎么去實(shí)現(xiàn)這個計劃,并掌握了在執(zhí)行的過程中怎樣去克服心理上的不良情緒。因此在以后的生活和學(xué)習(xí)的過程中,我一定把課程設(shè)計的精神帶到生活中,使生活變得更好。參考文獻(xiàn)1 譚浩強(qiáng). C語言程序設(shè)計(第三版)M. 清華大學(xué)出版社, 2007.2 姜敏芝,余健. C語言程序設(shè)計案例精編M. 清華大學(xué)出版社, 2008.3 李健學(xué),余健. 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編M. 2007.4 唐國民,王國均. 數(shù)據(jù)結(jié)構(gòu)(C語言版)M. 北京:清華大學(xué)出版社.5 王路明. C語言程序設(shè)計教程M. 北京:北京郵電大學(xué)出版社,
33、2005年5月.6 譚浩強(qiáng). C+程序設(shè)計M. 北京:清華大學(xué)出版社.2004.7 范策. 算法與數(shù)據(jù)結(jié)構(gòu)(C語言版)M. 北京:機(jī)械工業(yè)出版社,2004.8 詹春華,楊沙. C語言程序設(shè)計教程M. 科學(xué)出版社,2011年8月.9 韓利凱,李軍,高寅. 數(shù)據(jù)結(jié)構(gòu)M. 浙江大學(xué)出版社,2013年8月.附錄/*程序功能:實(shí)現(xiàn)任意兩個高次多項(xiàng)式的加法和乘法運(yùn)算*/* 多項(xiàng)式加法和乘法 */#include<list>#include<iostream>#include<cassert>using namespace std; /定義多項(xiàng)式的項(xiàng)類 class ter
34、mpublic:int coef; /多項(xiàng)式系數(shù) int exp; /多項(xiàng)式指數(shù) /初始化項(xiàng)的系數(shù)和指數(shù) term(int c=0,int e=0):coef(c),exp(e);/定義多項(xiàng)式類 class PolyArithprivate:list<term> m_poly_list_first; /存儲第一個多項(xiàng)式 list<term> m_poly_list_second; /存儲第二個多項(xiàng)式 list<term> m_poly_list_result; /用以存儲運(yùn)算結(jié)果/*多項(xiàng)式私有成員函數(shù),用以乘法時的調(diào)用*/ list<term>
35、Poly_add(list<term>&poly_list_first,list<term>&poly_list_second) list<term> poly_list_result;/用以存儲運(yùn)算結(jié)果 list<term>:iterator iter_first = poly_list_first.begin(); list<term>:iterator iter_second = poly_list_second.begin(); /*該while循環(huán)針對兩個鏈表迭代器都沒有指到結(jié)尾的情形*/ while (it
36、er_first != poly_list_first.end() && iter_second != poly_list_second.end() term t_temp; term t_first = (term)*iter_first; term t_second = (term)*iter_second; if (t_first.exp>t_second.exp) poly_list_result.push_back(t_first); iter_first+; else if (t_second.exp>t_first.exp) poly_list_res
37、ult.push_back(t_second); iter_second+; else t_temp.coef = t_first.coef + t_second.coef; t_temp.exp = t_first.coef; poly_list_result.push_back(t_temp); iter_first+; iter_second+; /該for循環(huán)針對第一個多項(xiàng)式的迭代器沒有指到結(jié)尾 /第二個指到結(jié)尾的情形 for (;iter_first != poly_list_first.end();iter_first+) poly_list_result.push_back(*i
38、ter_first); /該for循環(huán)針對第二個多項(xiàng)式的迭代器沒有指到結(jié)尾 /第一個指到結(jié)尾的情形 for (; iter_second != poly_list_second.end(); iter_second+) poly_list_result.push_back(*iter_second); return poly_list_result; public: /輸入函數(shù),用以輸入多項(xiàng)式 void Poly_input()int n;cout << "請輸入第一個多項(xiàng)式的項(xiàng)數(shù):" << endl;cin >> n;cout <
39、< "按降冪輸入第一個多項(xiàng)式的每一項(xiàng)的系數(shù)和指數(shù):"cout << endl;for (int i = 1; i <= n; i+)term t_temp;cout << "請輸入第" << i << "項(xiàng)系數(shù)和指數(shù):"cout << endl;cin >> t_temp.coef;cin >> t_temp.exp;m_poly_list_first.push_back(t_temp);n = 0;cout << "
40、請輸入第二個多項(xiàng)式的項(xiàng)數(shù):" << endl;cin >> n;cout << "按降冪輸入第二個多項(xiàng)式的每一項(xiàng)的系數(shù)和指數(shù):"cout << endl;for (int j = 1; j <= n; j+)term t_temp;cout << "請輸入第" << j << "項(xiàng)系數(shù)和指數(shù):"cout << endl;cin >> t_temp.coef;cin >> t_temp.exp;m_po
41、ly_list_second.push_back(t_temp);/輸出函數(shù),用以輸出多項(xiàng)式 void Poly_output()list<term>:iterator iter = m_poly_list_first.begin(); /輸出第一個多項(xiàng)式的每一項(xiàng) cout<<"第一個多項(xiàng)式為:"for (;iter != m_poly_list_first.end();)term t_temp = *iter;cout << t_temp.coef << "x" << t_temp.exp;i
42、f (+iter != m_poly_list_first.end()cout << "+"cout << endl;list<term>:iterator iter1 = m_poly_list_second.begin(); /輸出第二個多項(xiàng)式的每一項(xiàng) cout<<"第二個多項(xiàng)式為:"for (;iter1 != m_poly_list_second.end();)term t_temp = *iter1;cout << t_temp.coef << "x"
43、<< t_temp.exp;if (+iter1 != m_poly_list_second.end()cout << "+"cout << endl;void Poly_output_result()list<term>:iterator iter = m_poly_list_result.begin(); /輸出多項(xiàng)式結(jié)果 for (;iter != m_poly_list_result.end();)term t_temp = *iter;cout << t_temp.coef << "
44、x" << t_temp.exp;if (+iter != m_poly_list_result.end()cout << "+"cout << endl;/加法函數(shù),其基本思想同上邊的私有成員函數(shù)Poly_add()/此處不帶參數(shù),多項(xiàng)式運(yùn)算對象為私有數(shù)據(jù)成員void Poly_add()list<term>:iterator iter_first = m_poly_list_first.begin();list<term>:iterator iter_second = m_poly_list_seco
45、nd.begin();while (iter_first != m_poly_list_first.end() && iter_second != m_poly_list_second.end()term t_temp;term t_first = (term)*iter_first;term t_second = (term)*iter_second;if(t_first.exp>t_second.exp)m_poly_list_result.push_back(t_first);iter_first+;else if(t_second.exp>t_first.exp)m_poly_list_result.push_back(t_second);iter_second+;elset_temp.coef = t_first.coef + t_second.coef;t_temp.exp = t_first.ex
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)機(jī)托管與農(nóng)業(yè)技術(shù)改造服務(wù)合同3篇
- 二零二五年度農(nóng)村住房建設(shè)施工合同糾紛訴訟狀撰寫指南
- 2025年度挖掘機(jī)安全協(xié)議及施工安全風(fēng)險評估合同3篇
- 二零二五年度農(nóng)村土地互換及農(nóng)村電商發(fā)展合同
- 2025年度公司項(xiàng)目考察包車服務(wù)合同3篇
- 二零二五年度航空航天發(fā)動機(jī)維修與性能恢復(fù)合同3篇
- 2025年度消防報警系統(tǒng)設(shè)備研發(fā)與售后技術(shù)支持合同3篇
- 2024年中國氨基酸粉市場調(diào)查研究報告
- 2024年中國梅毒螺旋體市場調(diào)查研究報告
- 2024年中國柔軟型頸椎牽引器市場調(diào)查研究報告
- 環(huán)衛(wèi)清掃保潔、垃圾清運(yùn)及綠化服務(wù)投標(biāo)方案(技術(shù)標(biāo) )
- 13-4管道(設(shè)備)沖洗消毒試驗(yàn)記錄
- 農(nóng)田臨水臨電施工方案范本
- 千字文毛筆楷書描紅字帖-米字格A4版
- 重金屬礦山生態(tài)治理與環(huán)境修復(fù)技術(shù)進(jìn)展
- HR主題分享9-繪制學(xué)習(xí)地圖
- 成長需要挫折演講稿(20篇)
- 職工學(xué)歷教育補(bǔ)貼申請書
- GB/T 42915-2023銅精礦及主要含銅物料鑒別規(guī)范
- 高三英語二輪復(fù)習(xí)讀后續(xù)寫之彈鋼琴的媽媽講義
- s7et200mp自動化系統(tǒng)手冊
評論
0/150
提交評論