大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)一元多項(xiàng)式地加減法運(yùn)算_第1頁(yè)
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)一元多項(xiàng)式地加減法運(yùn)算_第2頁(yè)
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)一元多項(xiàng)式地加減法運(yùn)算_第3頁(yè)
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)一元多項(xiàng)式地加減法運(yùn)算_第4頁(yè)
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)一元多項(xiàng)式地加減法運(yùn)算_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)用文檔武漢理工大學(xué)華夏學(xué)院課程設(shè)計(jì) 報(bào)告書課程名稱:數(shù)據(jù)結(jié)構(gòu)與算法分析題 目:用C語(yǔ)言實(shí)現(xiàn)一元多項(xiàng)式的加減法運(yùn)算系名:信息工程系專業(yè)班級(jí): 物聯(lián)網(wǎng)工程 1122班姓名:隋明超學(xué) 號(hào):10213312201指導(dǎo)教師:司曉梅2014年1月3日文案大全實(shí)用文檔武漢理工大學(xué)華夏學(xué)院信息工程系課程設(shè)計(jì)任務(wù)書課程名稱:數(shù)據(jù)結(jié)構(gòu)與算法分析指導(dǎo)教師:司曉梅班級(jí)名稱:物聯(lián)網(wǎng)1121-2開課系、教研室: 信息系計(jì)算機(jī)一、課程設(shè)計(jì)目的與任務(wù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)是為訓(xùn)練學(xué)生的數(shù)據(jù)組織能力和提高程序設(shè)計(jì)能力而設(shè)置的增強(qiáng) 實(shí)踐能力的課程。目的: 學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課程, 旨在使學(xué)生學(xué)會(huì)分析研究數(shù)據(jù)對(duì)象的特性,學(xué) 會(huì)數(shù)據(jù)的組織方法

2、,以便選擇合適的數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)以及相應(yīng)操作,把現(xiàn)實(shí)世界中的問題轉(zhuǎn)換為計(jì)算機(jī)內(nèi)部的表示和處理,這就是一個(gè)良好的程序設(shè)計(jì)技能訓(xùn)練的過程。提高學(xué)生的程序設(shè)計(jì)能力、掌握基本知識(shí)、基本技能,提高算法設(shè)計(jì)質(zhì)量與程序設(shè)計(jì)素質(zhì)的培 養(yǎng)就是本門課程的課程設(shè)計(jì)的目的。任務(wù):根據(jù)題目要求,完成算法設(shè)計(jì)與程序?qū)崿F(xiàn),并按規(guī)定寫出課程設(shè)計(jì)報(bào)告。二、課程設(shè)計(jì)的內(nèi)容與基本要求設(shè)計(jì)題目:用c語(yǔ)言實(shí)現(xiàn)一元多項(xiàng)式的加減法計(jì)算問題描述輸入并建立兩個(gè)多項(xiàng)式并輸出多項(xiàng)式設(shè)計(jì)一個(gè)程序:對(duì)兩個(gè)多項(xiàng)式進(jìn)行加、減法運(yùn)算,建立一個(gè)新多項(xiàng)式并輸出。實(shí)現(xiàn)提示:選擇單鏈表存儲(chǔ)多項(xiàng)式具體要完成的任務(wù)是:A. 編制完成上述問題的 C語(yǔ)言程序、進(jìn)行

3、程序調(diào)試并能得出正確的運(yùn)行結(jié)果。B. 寫出規(guī)范的課程設(shè)計(jì)報(bào)告書;三、課程設(shè)計(jì)步驟及時(shí)間進(jìn)度和場(chǎng)地安排 時(shí)間:本課程設(shè)計(jì)安排在第 18周 地點(diǎn):現(xiàn)代教育中心 具體時(shí)間安排如下:第一天:布置題目,確定任務(wù)、查找相關(guān)資料第二天第四天:功能分析,編寫程序,調(diào)試程序、運(yùn)行系統(tǒng);第五天上午:撰寫設(shè)計(jì)報(bào)告;第五天下午:程序驗(yàn)收、答辯。四、課程設(shè)計(jì)考核及評(píng)分標(biāo)準(zhǔn)課程設(shè)計(jì)考核將綜合考慮學(xué)生的系統(tǒng)設(shè)計(jì)方案、運(yùn)行結(jié)果、課程設(shè)計(jì)報(bào)告書的質(zhì)量、態(tài)度、考勤、答辯情況等各因素。具體評(píng)分標(biāo)準(zhǔn)如下:(1)設(shè)計(jì)方案正確,具有可行性、創(chuàng)新性;30 分20(2)系統(tǒng)開發(fā)效果較好;文案大全實(shí)用文檔(3)設(shè)計(jì)報(bào)告規(guī)范、課程設(shè)計(jì)報(bào)告質(zhì)量高

4、;20分(4)課程設(shè)計(jì)答辯時(shí),問題回答正確;20分(5)態(tài)度認(rèn)真、刻苦鉆研、遵守紀(jì)律;10分按上述五項(xiàng)分別記分后求和,總分按五級(jí)制記載最后成績(jī)。優(yōu)秀(10090分),良好(8089分),中等(7079分),及格(6069分),不及格(059分)文案大全實(shí)用文檔1 .設(shè)計(jì)題目:用C吾言實(shí)現(xiàn)一元多項(xiàng)式的加減法運(yùn)算2 .開發(fā)環(huán)境、采用的語(yǔ)言:(1)Windows XP 中文操作系統(tǒng)(2) Visual C+ 6.03.設(shè)計(jì)思想(對(duì)你的整個(gè)設(shè)計(jì)思路作曲說明):3.1 問題描述:輸入并建立兩個(gè)多項(xiàng)式并輸出多項(xiàng)式,對(duì)兩個(gè)多項(xiàng)式進(jìn)行加、 減法運(yùn)算,建立一個(gè)新多項(xiàng)式并輸出。3.2 問題思考:用c語(yǔ)言編寫一段程

5、序,該程序的功能相當(dāng)于一個(gè)一元多項(xiàng)式的計(jì)算器,能夠?qū)崿F(xiàn)按照指數(shù)降哥建立并輸出多項(xiàng)式,并且能夠完成多個(gè)多項(xiàng)式的相加、相減運(yùn)算及結(jié)果輸出的功能。此程序的數(shù)據(jù)結(jié)構(gòu)是選擇用帶表頭結(jié)點(diǎn)的單鏈表存儲(chǔ)多項(xiàng)式。雖然一元多項(xiàng)式可以用順序和鏈表存儲(chǔ)結(jié)果表示,但順序結(jié)構(gòu)的最大長(zhǎng)度很難確定。比如當(dāng)多項(xiàng)式的系數(shù)較大時(shí),此時(shí)就會(huì)浪費(fèi)存儲(chǔ)空間,所以應(yīng)該選用鏈表結(jié)構(gòu)來存儲(chǔ)一元多項(xiàng)式。但鏈表的結(jié)構(gòu)體可以用來存儲(chǔ)多項(xiàng)式的系數(shù)、指數(shù)、下一個(gè)指針3個(gè)元素,這樣便于實(shí)現(xiàn)任意多項(xiàng)式的加法、減法運(yùn)算。3.3 功能設(shè)計(jì):(1)多項(xiàng)式建立:提示用戶輸入兩個(gè)多項(xiàng)式 A和B,輸入形式為:1)先輸入多項(xiàng)式A的項(xiàng)數(shù),回車2)輸入多項(xiàng)式A第一項(xiàng)的系數(shù),

6、空格隔開輸入多項(xiàng)式A第一項(xiàng)的指數(shù),3)繼續(xù)輸入多項(xiàng)式 A的其他項(xiàng),輸入方式與上同;4)再建立多項(xiàng)式 B,數(shù)據(jù)輸入方式與建立多項(xiàng)式 A相同。(2)功能項(xiàng):設(shè)計(jì)一個(gè)功能項(xiàng),分別為 1.輸出多項(xiàng)式a和b2.輸出多項(xiàng)式a+b文案大全實(shí)用文檔3. 輸出多項(xiàng)式a-b4. 退出(3)執(zhí)行操作:此時(shí)用戶可以根據(jù)需要選擇功能項(xiàng)中四項(xiàng)進(jìn)行輸出。4 .程序總的流程圖:通過設(shè)計(jì)思想,可設(shè)計(jì)出如圖4-1所示的一元多項(xiàng)式總流程圖:圖4.1 一元多項(xiàng)式總流程圖5 .數(shù)據(jù)結(jié)構(gòu)說明及模塊算法說明(或流程圖):、5.1 存儲(chǔ)結(jié)構(gòu):一元多項(xiàng)式的表示在計(jì)算機(jī)內(nèi)可以用鏈表來表示,為了節(jié)省存儲(chǔ)空間,只存儲(chǔ)多項(xiàng)式中系數(shù)非零的項(xiàng)。鏈表中的每

7、一個(gè)結(jié)點(diǎn)存放多項(xiàng)式的一個(gè)系數(shù)非零項(xiàng),它包含三個(gè)域,分別存放該項(xiàng)的系數(shù)、指數(shù)以及指向下一個(gè)多項(xiàng)式項(xiàng)結(jié)點(diǎn)的指針。創(chuàng)建一元多項(xiàng)式鏈表,對(duì)一元多項(xiàng)式的運(yùn)算中會(huì)出現(xiàn)的各種可能情況進(jìn)行分析,實(shí)現(xiàn)一元多項(xiàng)式的相加、相減操作。5.2 基本算法:(1) 一元多項(xiàng)式的建立:輸入多項(xiàng)式采用頭插法的方式,輸入多項(xiàng)式中的一個(gè)項(xiàng)的系數(shù)和指數(shù),就產(chǎn)生一個(gè)新文案大全實(shí)用文檔的結(jié)點(diǎn),建立起它的右指針,并用頭結(jié)點(diǎn)指向它;為了判斷一個(gè)多項(xiàng)式是否輸入結(jié)束,定義一個(gè)結(jié)束標(biāo)志,當(dāng)輸入非 。時(shí)就繼續(xù);輸入為 。時(shí),就結(jié)束一個(gè)多項(xiàng)式的輸入。(2)顯小一兀多項(xiàng)式:如果系數(shù)是大于0的話就輸出+系數(shù)MA指數(shù)的形式;如果系數(shù)是小于0的話就輸出 系數(shù)

8、XA指數(shù)的形式;如果指數(shù)為 0的話就直接輸出系數(shù);如果指數(shù)是1的話就直接輸 出+M;如果指數(shù)是-1的話,就直接輸出-M。(3) 一元多項(xiàng)式加法運(yùn)算:從兩個(gè)多項(xiàng)式的頭部開始判斷,當(dāng)兩個(gè)多項(xiàng)式的某一項(xiàng)度不為空時(shí),假設(shè)P、Q分別指向多項(xiàng)式A和多項(xiàng)式B中當(dāng)前進(jìn)行比較的結(jié)點(diǎn), 然后比較兩個(gè)結(jié)點(diǎn)中的指數(shù)項(xiàng),有三種情況:1、當(dāng)P所指結(jié)點(diǎn)的指數(shù)小于 Q的話,就應(yīng)該復(fù)制 P的結(jié)點(diǎn)到多項(xiàng)式鏈中。2、P所指結(jié) 點(diǎn)的指數(shù)如果大于 Q的指數(shù)的話,就應(yīng)該復(fù)制 Q的結(jié)點(diǎn)到多項(xiàng)式鏈中。3、當(dāng)P所指結(jié)點(diǎn)的 指數(shù)等于Q所指結(jié)點(diǎn)的指數(shù)時(shí),則將兩個(gè)結(jié)點(diǎn)中的系數(shù)相加,若和不為 0,則修改P所指結(jié) 點(diǎn)的系數(shù)值,同時(shí)釋放 Q所指結(jié)點(diǎn);若和

9、為0,從多項(xiàng)式A的鏈表中刪除相應(yīng)結(jié)點(diǎn),并釋放 P、Q所指結(jié)點(diǎn)。加法流程圖如圖5.2-1所示:文案大全實(shí)用文檔圖5.2-1 一元多項(xiàng)式加法運(yùn)算流程圖(4) 一元多項(xiàng)式的減法從兩個(gè)多項(xiàng)式的頭部開始判斷,當(dāng)兩個(gè)多項(xiàng)式的某一項(xiàng)度不為空時(shí),假設(shè)P、Q分別指向多項(xiàng)式A和多項(xiàng)式B中當(dāng)前進(jìn)行比較的結(jié)點(diǎn), 然后比較兩個(gè)結(jié)點(diǎn)中的指數(shù)項(xiàng),有三種情況:1、當(dāng)P所指結(jié)點(diǎn)的指數(shù)小于 Q的話,就應(yīng)該復(fù)制 P的結(jié)點(diǎn)到多項(xiàng)式鏈中。2、P所指結(jié) 點(diǎn)的指數(shù)如果大于 Q的指數(shù)的話,就應(yīng)該復(fù)制Q的結(jié)點(diǎn)到多項(xiàng)式鏈中,并將建立的結(jié)點(diǎn)系數(shù) 變?yōu)橄喾磾?shù)。3、當(dāng)P所指結(jié)點(diǎn)的指數(shù)等于 Q所指結(jié)點(diǎn)的指數(shù)時(shí),并將 Q的結(jié)點(diǎn)系數(shù)變?yōu)橄?反數(shù),并將兩個(gè)結(jié)

10、點(diǎn)中的系數(shù)相加,若和不為0,則修改P所指結(jié)點(diǎn)的系數(shù)值,同時(shí)釋放 Q文案大全實(shí)用文檔若和為 0,從多項(xiàng)式A的鏈表中刪除相應(yīng)結(jié)點(diǎn),并釋放P、Q所指結(jié)點(diǎn)。減法流程圖如圖5.2-2所示:圖5.2-2 一元多項(xiàng)式減法運(yùn)算流程圖6.程序運(yùn)行說明及結(jié)果截圖:6.1歡迎界面:文案大全實(shí)用文檔程序打開,首先顯示上的是歡迎界面,在歡迎界面下方有第一個(gè)多項(xiàng)式的輸入模塊。c數(shù)據(jù)結(jié)構(gòu)tDebugt需圖超.ex丁日日瓜圖6.1歡迎界面6.2 輸入界面:看到輸入界面后,輸入第一個(gè)多項(xiàng)式的項(xiàng)數(shù), 接下來輸入這個(gè)多項(xiàng)式第一項(xiàng)的系數(shù),空格繼續(xù)輸入這個(gè)多項(xiàng)式的指數(shù)。回車?yán)^續(xù)輸入下一項(xiàng),輸入完后回車輸入下一個(gè)多項(xiàng)圖6.2輸入界面6.

11、3 功能選項(xiàng):當(dāng)數(shù)據(jù)輸入完成后進(jìn)入功能選項(xiàng),在功能選項(xiàng)可以選擇自己想要實(shí)現(xiàn)的功能進(jìn)行操作。文案大全實(shí)用文檔人多項(xiàng)式雙的項(xiàng)數(shù):2 士項(xiàng)的系數(shù)與指數(shù)工1 3入第2項(xiàng)的系數(shù)與指數(shù):2 6IJZ入1A1A1A項(xiàng)式h的項(xiàng)數(shù)門1項(xiàng)的系數(shù)與指數(shù):2 52項(xiàng)的系數(shù)與指數(shù):二二3項(xiàng)的家數(shù)與指數(shù)二4 2:3 612 3 4一電力 禾+ - aaa 項(xiàng)項(xiàng)攻 多的多 出立立出 輸建建退丸行操作:圖6.3功能選項(xiàng)6.4 多項(xiàng)式輸出:在執(zhí)行操作中選擇1,輸出多項(xiàng)式a和b。XMXXXXXXXXXXXXM*MMX*MXXXX算請(qǐng)輸入第2項(xiàng)的系數(shù)與指數(shù):2 6請(qǐng)揄入爰項(xiàng)式總的項(xiàng)數(shù)二2踵霸入篦1項(xiàng)的系數(shù)與指數(shù)門3<第差人入

12、入入項(xiàng)式b的項(xiàng)數(shù):3t項(xiàng)的系數(shù)與相數(shù)S2項(xiàng)的系數(shù)與指數(shù)二3 63項(xiàng)的系數(shù)與指數(shù):4 2功能項(xiàng):1 .輸出多項(xiàng)式a和h2 ,建立多項(xiàng)式a*h3 .建立多項(xiàng)式af4 .退出、口:匕.苜'M MMM MMM M X M MMM MMM 注射 M WK執(zhí)行鎏作;1 多項(xiàng)式廷:2/6十k3 多項(xiàng)式b: 3X% +2XA5 +4X2XJtX/JtXKJtXKJtXKJtXKJOIltatXKJOIlti青福一入及J 官昌*乂*/ HKK,1t 1tHlt K,1tMlt,* 1txlt 執(zhí)行操作,圖6.4多項(xiàng)式輸出文案大全實(shí)用文檔6.5多項(xiàng)式相加:在執(zhí)行操作中選擇2,輸出多項(xiàng)式a+b。NPM用手用

13、2 3 4 卻如期 3匕日匕日匕日 :frYJL寸 4141 數(shù)與與與 夜數(shù)期破 的系系系 b內(nèi)向內(nèi) 嚅項(xiàng)項(xiàng) r 1 2 3 1AJA1A1A "月MnMRwfr功能項(xiàng):工”輸出多項(xiàng)式&和b立多項(xiàng)式幣+h2.3 .建立多項(xiàng)式4 ,退出、虹項(xiàng)的系數(shù)與揖數(shù) 眨項(xiàng)的系數(shù)與指數(shù):1IX入入1A項(xiàng)式h的項(xiàng)藪:31項(xiàng)的系數(shù)與揖數(shù)二2 5Z項(xiàng)的系數(shù)與指數(shù):3 612 .而出多項(xiàng)式a和h 隹立多項(xiàng)式a <b5XA6+2X5+XA3+4XA2*1 請(qǐng)輸入功昌縣項(xiàng)編號(hào)*2.建立多項(xiàng)式小-b4.退出口XKHXXXXKMEKXXXKMEXXMXKMtKXMX 11c j 青苜行 當(dāng)扁3項(xiàng)的系數(shù)

14、與目於4 22X6 *產(chǎn)33X6+2XA5+4XA2*請(qǐng)輸入功能項(xiàng)編號(hào)*2文案大全瑞福人功能項(xiàng)編號(hào):2XA6+XA3s 3m5+4*2 !WWM7C»iWM>JWM j舌| /'1. jf茸* 工貝M 注 3cM it JWM; 也行壁作,2、,多項(xiàng)式mb; 5«%+25+»*3+4«*2,緊一具-其其<-其-一- 青,前月|苜*工號(hào)板行操作工圖6.5多項(xiàng)式相加6.6多項(xiàng)式相減:在執(zhí)行操作中選擇3,輸出多項(xiàng)式a-bo實(shí)用文檔圖6.6多項(xiàng)式相減7 .程序調(diào)試及測(cè)試過程記載:本次課程設(shè)計(jì)中,經(jīng)過反復(fù)調(diào)試,程序已經(jīng)可以正常運(yùn)行。在設(shè)計(jì)該算法

15、時(shí),出現(xiàn) 了一些問題,例如在建立鏈表時(shí)頭指針的設(shè)立導(dǎo)致了之后運(yùn)用到相關(guān)的指針時(shí)沒能很好 的移動(dòng)指針出現(xiàn)了數(shù)據(jù)重復(fù)輸出或是輸出系統(tǒng)缺省值,不能實(shí)現(xiàn)算法。實(shí)現(xiàn)加法時(shí)該鏈 表并沒有向通常那樣通過建立第三個(gè)鏈表來存放運(yùn)算結(jié)果,而是再度利用了鏈表之一來進(jìn)行節(jié)點(diǎn)的比較插入刪除等操作。為了使輸入數(shù)據(jù)按指數(shù)降序排列,可在數(shù)據(jù)的輸入后 先做一個(gè)節(jié)點(diǎn)的排序函數(shù),通過對(duì)鏈表排序后再進(jìn)行之后加減運(yùn)算。8 .總結(jié)及心得體會(huì):在這次課程設(shè)計(jì)中,我遇到了不少困難,但是在我的堅(jiān)持和虛心請(qǐng)教中都得到順利解 決。在這次課程設(shè)計(jì)中,我發(fā)現(xiàn)理論必須和實(shí)踐相結(jié)合,才能真正學(xué)會(huì)程序設(shè)計(jì),才能完成一個(gè)課題。在這次設(shè)計(jì)中我參考了不少書籍,從

16、中學(xué)到了課堂中無法學(xué)到的許多東西, 對(duì)此我感到很興奮。原來不斷的學(xué)習(xí),不斷的探索是苦中帶著甜,雖然經(jīng)歷了不少?gòu)澛罚?jīng)歷了不少挫折,但當(dāng)程序調(diào)試成功后,當(dāng)運(yùn)行能達(dá)到要求后,我感到十二分成就感。面對(duì)課題, 要展現(xiàn)自信出來,這是成功的一半,在這個(gè)設(shè)計(jì)過程中,不懂的可以虛心向老師請(qǐng)教,與同學(xué)交流經(jīng)驗(yàn)。態(tài)度是成功的基石! 在我這課題中,關(guān)鍵在于對(duì)一元多項(xiàng)式的表示及相加的操作。這個(gè)實(shí)際問題,在學(xué)習(xí)過的知識(shí)中找到一種合適的模型來模擬,數(shù)據(jù)結(jié)構(gòu)的選擇是主要,而對(duì)于編寫代碼,所涉及的并不是很復(fù)雜,對(duì)于鏈表數(shù)據(jù)存儲(chǔ)訪問方式,在C語(yǔ)言的學(xué)習(xí)過程中已經(jīng)有過很多講解,為了進(jìn)一步了解,我還閱讀了一些數(shù)據(jù)結(jié)構(gòu)中關(guān)于鏈表的敘

17、述。對(duì)于這個(gè)課題,運(yùn)用C語(yǔ)言簡(jiǎn)單一點(diǎn)的結(jié)構(gòu)化程序設(shè)計(jì)已足能滿足要求而不至于結(jié)構(gòu)過于復(fù)雜,為了簡(jiǎn)便的實(shí)現(xiàn)插入操作,我選擇了一個(gè)帶表頭結(jié)點(diǎn)的鏈表。在寫源代碼時(shí)要注意指針使用的正確性,為產(chǎn)生的新結(jié)點(diǎn)需及時(shí)分配存儲(chǔ)空間。在設(shè)計(jì)中將問題抽象化,而完成后在運(yùn)行時(shí),可以說是用抽象的數(shù)據(jù)模 型來解決實(shí)際問題。我的這個(gè)課題相比較于其他同學(xué)來說,是相對(duì)簡(jiǎn)單的一點(diǎn)的。 在現(xiàn)實(shí)中,很多功能現(xiàn)在都沒法實(shí)現(xiàn),還有不少操作需進(jìn)一步完善,這次程序設(shè)計(jì)有很多不足處, 可能是因?yàn)榻?jīng)驗(yàn)不足,對(duì)問題預(yù)期不夠等一些不可預(yù)見的原因所致,這些都是我以后要汲取的教訓(xùn)。9 .附錄:源代碼(注意要加上詳細(xì)的注釋)#include<stdi

18、o.h>文案大全實(shí)用文檔#include<malloc.h>typedef struct Polynomialfloat coef;int expn;struct Polynomial *next;*Polyn,Polynomial; /Polynvoid Insert(Polyn p,Polyn h) if(p->coef=0) free(p); / elsePolyn q1,q2;q1=h;q2=h->next;while(q2&&p->expn<q2->expn) /q1=q2;q2=q2->next;if(q2&am

19、p;&p->expn=q2->expn) / q2->coef+=p->coef;free(p);if(!q2->coef) /q1->next=q2->next;free(q2);else/p->next=q2;q1->next=p; /InsertPolyn CreatePolyn(Polyn head,int m)/多項(xiàng)式int i;為結(jié)點(diǎn)指針類型系數(shù)為0的話釋放結(jié)點(diǎn)查找插入位置將指數(shù)相同相項(xiàng)合并系數(shù)為0的話釋放結(jié)點(diǎn)指數(shù)為新時(shí)將結(jié)點(diǎn)插入建立一個(gè)頭指針為head、項(xiàng)數(shù)為m的一元Polyn p;p=head=(Polyn)mall

20、oc(sizeof(struct Polynomial);文案大全實(shí)用文檔head->next=NULL;for(i=0;i<m;i+)p=(Polyn)malloc(sizeof(struct Polynomial);/建立新結(jié)點(diǎn)以接收數(shù)據(jù)printf("請(qǐng)輸入第狽的系數(shù)與指數(shù):",i+1);scanf("%f %d",&p->coef,&p->expn); Insert(p,head); / 調(diào)用Insert 函數(shù)插入結(jié)點(diǎn)return head;CreatePolynvoid DestroyPolyn(Poly

21、n p)/銷毀多項(xiàng)式 pPolyn q1,q2;q1=p->next;q2=q1->next;while(q1->next)free(q1);q1=q2;/指針后移q2=q2->next;void PrintPolyn(Polyn P)Polyn q=P->next;int flag=1;/ 項(xiàng)數(shù)計(jì)數(shù)器if(!q) /若多項(xiàng)式為空,輸出 0putchar('0');printf("n");return;while (q)if(q->coef>0&&flag!=1) putchar('+'

22、;); 系數(shù)大于 0 且不是第一項(xiàng)if(q->coef!=1&&q->coef!=-1)/ 系數(shù)非 1 或-1 的普通情況 printf("%g",q->coef);if(q->expn=1) putchar('X');else if(q->expn) printf("XA%d",q->expn);文案大全實(shí)用文檔elseif(q->coef=1)if(!q->expn) putchar('l');else if(q->expn=1) putchar(&

23、#39;X');else printf("XA%d",q->expn);if(q->coef=-1)if(!q->expn) printf("-1");else if(q->expn=1) printf("-X");else printf("-XA%d",q->expn);q=q->next;flag+;/whileprintf("n");PrintPolynint compare(Polyn a,Polyn b)if(a&&b)if(

24、!b|a->expn>b->expn) return 1;else if(!a|a->expn<b->expn) return -1;多項(xiàng)式已空,但 b多項(xiàng)式非空else return 0;else if(!a&&b) return -1;/aelse return 1;/b多項(xiàng)式已空,但 a多項(xiàng)式非空comparePolyn AddPolyn(Polyn pa,Polyn pb)/求解并建立多項(xiàng)式a+b,返回其頭指針Polyn qa=pa->next;Polyn qb=pb->next;Polyn headc,hc,qc;hc=

25、(Polyn)malloc(sizeof(struct Polynomial);/建立頭結(jié)點(diǎn)hc->next=NULL;headc=hc;while(qa|qb)文案大全實(shí)用文檔qc=(Polyn)malloc(sizeof(struct Polynomial);switch(compare(qa,qb)case 1:qc->coef=qa->coef;qc->expn=qa->expn;qa=qa->next;break;case 0:qc->coef=qa->coef+qb->coef;qc->expn=qa->expn;q

26、a=qa->next;qb=qb->next;break;case -1:qc->coef=qb->coef;qc->expn=qb->expn;qb=qb->next;break;/switchif(qc->coef!=0)qc->next=hc->next;hc->next=qc;hc=qc;else free(qc);/ 當(dāng)相加系數(shù)為。時(shí),釋放該結(jié)點(diǎn)/whilereturn headc;/AddPolyn文案大全實(shí)用文檔Polyn SubtractPolyn(Polyn pa,Polyn pb)求解并建立多項(xiàng)式 a+b,返

27、回其頭指針Polyn h=pb;Polyn p=pb->next;Polyn pd;while(p)/將pb的系數(shù)取反p->coef*=-1;p=p->next;恢復(fù)pb的系數(shù)pd=AddPolyn(pa,h);for(p=h->next;p;p=p->next) /p->coef*=-1;return pd;SubtractPolynint main()int m,n,flag=0;Polyn pa=0,pb=0,pc,pd,pe,pf;/float x;定義各式的頭指針,pa與pb在使用前付初值 NULLprintf( "*n");printf(" 請(qǐng)輸入多項(xiàng)式 a的項(xiàng)數(shù):");scanf("%d",&m);pa=CreatePolyn(pa,m);/建立多項(xiàng)式 aprintf( "* *n,);printf(” 請(qǐng)輸入多項(xiàng)式 b的項(xiàng)數(shù):");scanf("%d",&n);pb=CreatePolyn(pb,n);/建立多項(xiàng)式 b/輸出菜單printf( "* *n,);printf(" 功能項(xiàng):nt1. 輸出多項(xiàng)式 a和bnt2. 建立多項(xiàng)式

溫馨提示

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

評(píng)論

0/150

提交評(píng)論