一元稀疏多項(xiàng)式的計(jì)算_第1頁(yè)
一元稀疏多項(xiàng)式的計(jì)算_第2頁(yè)
一元稀疏多項(xiàng)式的計(jì)算_第3頁(yè)
一元稀疏多項(xiàng)式的計(jì)算_第4頁(yè)
一元稀疏多項(xiàng)式的計(jì)算_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)一 一元稀疏多項(xiàng)式的計(jì)算一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)一元稀疏多項(xiàng)式的表示和計(jì)算,幫助學(xué)生熟練掌握線性表的基本操作,以及用線性鏈表表示線性表的存儲(chǔ)結(jié)構(gòu)和操作的實(shí)現(xiàn)。二、實(shí)驗(yàn)內(nèi)容實(shí)現(xiàn)一元稀疏多項(xiàng)式的如下運(yùn)算:(1)兩個(gè)一元稀疏多項(xiàng)式相加運(yùn)算(2)兩個(gè)一元稀疏多項(xiàng)式相減運(yùn)算(3)兩個(gè)一元稀疏多項(xiàng)式相乘運(yùn)算三、實(shí)驗(yàn)原理1、一元多項(xiàng)式的邏輯表示一元多項(xiàng)式pn(x)可表示成:pn(x)=p0+p1x+p2x2+pnxnn+1個(gè)系數(shù)可用線性表來(lái)表示:p0,p1,p2,pn)其中每一項(xiàng)的指數(shù)i隱含在其系數(shù)pi的序號(hào)中。一個(gè)一元多項(xiàng)式,如果其系數(shù)不為0的項(xiàng)相對(duì)于其多項(xiàng)式的次數(shù)(最大指數(shù))而言要少得多,則稱該一元多項(xiàng)式為

2、一元稀疏多項(xiàng)式。對(duì)一元稀疏多項(xiàng)式,若采用順序存儲(chǔ)結(jié)構(gòu),需n+1個(gè)元素單元存放系數(shù)。當(dāng)n很大且為零的系數(shù)較多時(shí),既浪費(fèi)存儲(chǔ)空間,又浪費(fèi)運(yùn)算時(shí)間。如:s(x)=1+3x10000+2x20000 采用順序存儲(chǔ)分配需20001個(gè)元素空間,但只有3個(gè)元素有意義。若參與同數(shù)量級(jí)的加法運(yùn)算,要運(yùn)行2000次以上。因此,對(duì)一元多項(xiàng)式采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是必然的選擇。上例的鏈表表示形式如圖1-1所示。011000320002p圖1-1:一元稀疏多項(xiàng)式的鏈表表示示意圖 2、一元稀疏多項(xiàng)式的鏈?zhǔn)酱鎯?chǔ)表示結(jié)點(diǎn)結(jié)構(gòu)定義如下:typedef struct Itemdouble coef;int expn;struct It

3、em *next;Item,*Polyn;3、一元稀疏多項(xiàng)式運(yùn)算原理設(shè)有兩個(gè)稀疏多項(xiàng)式A和B,其運(yùn)算原理如下:(1)兩個(gè)多項(xiàng)式相加(C=AB)的運(yùn)算原則:指數(shù)相同,系數(shù)相加,若不為0,則在結(jié)果多項(xiàng)式中構(gòu)成一新項(xiàng)。指數(shù)不同,則兩項(xiàng)分別抄入結(jié)果多項(xiàng)式中。(2)兩個(gè)多項(xiàng)式相減(C=AB)的運(yùn)算原則:指數(shù)相同,系數(shù)相減,若不為0,則構(gòu)成一新項(xiàng)。指數(shù)不同,對(duì)A多項(xiàng)式的項(xiàng),直接抄入結(jié)果多項(xiàng)式中。對(duì)B多項(xiàng)式的項(xiàng),系數(shù)符號(hào)變換后,再將放入結(jié)果多項(xiàng)式中(3)兩個(gè)多項(xiàng)式相乘(C=AB)的運(yùn)算原則用B多項(xiàng)式的每一項(xiàng)分別去乘A多項(xiàng)式的每一項(xiàng),并將乘得得結(jié)果放入結(jié)果多項(xiàng)式中。若結(jié)果多項(xiàng)式中有指數(shù)相同的項(xiàng),則應(yīng)把它們合并

4、為一項(xiàng)。四、實(shí)現(xiàn)1、約定(1) 使用帶頭結(jié)點(diǎn)的鏈表表示一元稀疏多項(xiàng)式。(2) 用線性鏈表表示的一元稀疏多項(xiàng)式中,各結(jié)點(diǎn)按指數(shù)的升序排列。(3) 每個(gè)多項(xiàng)式都獨(dú)立存在,即參與運(yùn)算的兩個(gè)多項(xiàng)式的數(shù)據(jù)不能因運(yùn)算而受到破壞,加、減、乘運(yùn)算的結(jié)果應(yīng)相互不受影響。因此,對(duì)于每種情況都必須單獨(dú)建立一個(gè)鏈表進(jìn)行表示。(4) 每一種重復(fù)性的操作都要進(jìn)行確認(rèn),以免破壞原有操作的結(jié)果。如需要輸入A多項(xiàng)式,而A多項(xiàng)式已經(jīng)存在,這時(shí)通過(guò)“確認(rèn)”后再確定是否真正需要輸入。2、基本功能(1)多項(xiàng)式的輸入(2)兩個(gè)一元稀疏多項(xiàng)式相加運(yùn)算:P(x)+Q(x(3)兩個(gè)一元稀疏多項(xiàng)式相減運(yùn)算:P(x)Q(x)(4)兩個(gè)一元稀疏多項(xiàng)

5、式相乘運(yùn)算:P(x)Q(x)(5)多項(xiàng)式打印3、輔助功能(1)菜單選擇:將上述功能通過(guò)“菜單”形式羅列出來(lái),通過(guò)菜單選擇進(jìn)行交互式控制程序運(yùn)行。(2)插入結(jié)點(diǎn)位置查找:確定將一個(gè)新結(jié)點(diǎn)插入到多項(xiàng)式鏈表結(jié)構(gòu)中的位置,以保證鏈表中結(jié)點(diǎn)按指數(shù)升序排列。(3)交互選擇:當(dāng)出現(xiàn)重復(fù)性操作時(shí),提供交互式選擇方式,以確定其重復(fù)操作是否進(jìn)行。(4)撤消多項(xiàng)式:釋放表示多項(xiàng)式鏈表中所有結(jié)點(diǎn)的存儲(chǔ)空間。(5)多項(xiàng)式項(xiàng)插入:將表示多項(xiàng)式中一項(xiàng)的結(jié)點(diǎn)插入到鏈表中給定的位置。(6)判多項(xiàng)式非空:判斷某個(gè)多項(xiàng)式是否存在。(7)判斷兩個(gè)多項(xiàng)式的當(dāng)前運(yùn)算項(xiàng)的關(guān)系(指數(shù)大于,等于,小于)4、程序結(jié)構(gòu) 本程序可以由13個(gè)函數(shù)組成

6、,其中主函數(shù)1個(gè),基本功能函數(shù)5個(gè),輔助功能函數(shù)7個(gè)。函數(shù)間的調(diào)用關(guān)系圖1-2所示。mainnemuInput AddPolyn SubtractPolyn MultPolyn Output Select DestroyPolynNotEmptyInsertLocate insert ItemComp圖1-2:程序結(jié)構(gòu)示意圖5、程序函數(shù)(1)主函數(shù):main 功能:通過(guò)菜單選擇控制對(duì)系統(tǒng)功能的操作(2)菜單選擇函數(shù):menu函數(shù)格式: int menu(void)函數(shù)功能:構(gòu)造功能菜單,并選擇下一步要操作的功能。函數(shù)參數(shù):無(wú)參數(shù)。函數(shù)返回值:111中的一個(gè)序號(hào)??晒┻x擇的功能如下:1-crea

7、te P(x) 表示生成P多項(xiàng)式2-create Q(x) 表示生成Q多項(xiàng)式3-p(x)+Q(x) 表示兩多項(xiàng)式相加4-P(x)-Q(x) 表示兩多項(xiàng)式相減5-p(x)*Q(x) 表示兩多項(xiàng)式相乘6-print P(x) 表示打印P多項(xiàng)式7-print Q(x) 表示打印Q多項(xiàng)式8-print P(x)+Q(x) 表示打印兩多項(xiàng)式相加的結(jié)果9-print P(x)-Q(x) 表示打印兩多項(xiàng)式相減的結(jié)果10-print P(x)*Q(x) 表示打印兩多項(xiàng)式相乘的結(jié)果11Quit 表示退出系統(tǒng),結(jié)束程序的運(yùn)行在運(yùn)行過(guò)程中,輸入其中一個(gè)序號(hào),即表示下一步執(zhí)行后面的功能。如輸入3,表示執(zhí)行P(x)+(

8、x)額運(yùn)算。(3)輸入多項(xiàng)式函數(shù):input函數(shù)格式:Polyn Input(void)函數(shù)參數(shù):無(wú)參數(shù)函數(shù)功能:輸入多項(xiàng)式各項(xiàng)的系數(shù)和指數(shù),生成一個(gè)多項(xiàng)式鏈表。函數(shù)返回值:指向一個(gè)多項(xiàng)式鏈表的頭指針(4)兩多項(xiàng)式相加函數(shù): AddPolyn函數(shù)格式 Polyn AddPolyn(Polyn h1,Polyn h2)函數(shù)功能:實(shí)現(xiàn)兩個(gè)多項(xiàng)式h1和h2相加。函數(shù)參數(shù):Polyn h1指向第一個(gè)多項(xiàng)式鏈表的頭指針Polyn h2指向第二個(gè)多項(xiàng)式鏈表的頭指針函數(shù)返回值:指向相加后的結(jié)果鏈表的頭指針(5)兩多項(xiàng)式相減函數(shù): SubtractPolyn函數(shù)格式 Polyn SubtractPolyn(P

9、olyn h1,Polyn h2)函數(shù)功能:實(shí)現(xiàn)兩個(gè)多項(xiàng)式h1和h2相減。函數(shù)參數(shù):Polyn h1指向第一個(gè)多項(xiàng)式鏈表的頭指針Polyn h2指向第二個(gè)多項(xiàng)式鏈表的頭指針函數(shù)返回值:指向相減后的結(jié)果鏈表的頭指針(6)兩多項(xiàng)式相乘函數(shù): MultPolyn函數(shù)格式 Polyn MultPolyn(Polyn h1,Polyn h2)函數(shù)功能:實(shí)現(xiàn)兩個(gè)多項(xiàng)式h1和h2相乘。函數(shù)參數(shù):Polyn h1指向第一個(gè)多項(xiàng)式鏈表的頭指針Polyn h2指向第二個(gè)多項(xiàng)式鏈表的頭指針函數(shù)返回值:指向相乘后的結(jié)果鏈表的頭指針(7)顯示多項(xiàng)式函數(shù):Output函數(shù)格式:void Output(Polyn h,ch

10、ar *title)函數(shù)功能:輸出多項(xiàng)式的完整表示。如: P(x)=1.00+2.50x3-3.5x9函數(shù)參數(shù):Polyn h要輸出的多項(xiàng)式鏈表的頭指針 char *title字符串,提示要輸出一個(gè)什么樣的多項(xiàng)式,如“P(x)”。函數(shù)返回值:無(wú)返回值。(8)判斷選擇函數(shù):Select函數(shù)格式:int Select(char *str)函數(shù)功能:根據(jù)str提示的內(nèi)容判斷是執(zhí)行指定的操作,還是不執(zhí)行。輸入“Y”則表示執(zhí)行,若輸入“N”表示不執(zhí)行。如當(dāng)P(x)多項(xiàng)式已經(jīng)產(chǎn)生后,若再選擇產(chǎn)生P(x),這是提示:P(x) is not Empty,Create P(x) again?Input Y or

11、 N:若輸入“Y”則表示重新產(chǎn)生多項(xiàng)式P(x),若輸入“N”表示維持原多項(xiàng)式不變。函數(shù)參數(shù):char *str將要確定的內(nèi)容。函數(shù)返回值:1表示執(zhí)行指定的操作0表示不執(zhí)行指定的操作(9)插入位置定位函數(shù):InsertLocate函數(shù)格式: int InsertLocate(Polyn h,int expn,Item *p)函數(shù)功能:確定新結(jié)點(diǎn)的插入位置。其插入位置的確定是保證多項(xiàng)式鏈表按指數(shù)遞增排列的關(guān)鍵。函數(shù)參數(shù):Polyn h要查找的多項(xiàng)式鏈表的頭指針int expn新插入項(xiàng)的指數(shù)值。Item *p插入位置的前驅(qū)結(jié)點(diǎn)指針,由該函數(shù)的調(diào)用而被確定的內(nèi)容。新結(jié)點(diǎn)一定插入到該結(jié)點(diǎn)的后面。函數(shù)返回

12、值:-1若指數(shù)expn值在某兩個(gè)結(jié)點(diǎn)之間,則返回1,參數(shù)p帶回的值為指數(shù)值小于expn的結(jié)點(diǎn)指針。0若指數(shù)expn值等于某結(jié)點(diǎn)的指數(shù)值,則返回0,參數(shù)p帶回的值為指數(shù)值等于expn的結(jié)點(diǎn)指針。1若指數(shù)expn值大于最后一個(gè)結(jié)點(diǎn)的指數(shù)值,則返回1,參數(shù)p帶回最后一個(gè)結(jié)點(diǎn)的指針(10)結(jié)點(diǎn)插入函數(shù):insert函數(shù)格式:void insert(Item *pre,Item *p)函數(shù)功能:在指定結(jié)點(diǎn)pre后插入一個(gè)新結(jié)點(diǎn)p。函數(shù)參數(shù):Item *pre被插入結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)Item *p要插入的新結(jié)點(diǎn)函數(shù)返回值:無(wú)(11)撤消鏈表函數(shù):Destroy函數(shù)格式:void Destroy(Polyn h

13、)函數(shù)功能:釋放鏈表所占用的存儲(chǔ)空間函數(shù)參數(shù):Polyn h被撤消的鏈表的頭指針函數(shù)返回值:無(wú)(12)判鏈表非空函數(shù): PolynNotEmpty函數(shù)格式:int PolynNotEmpty(Polyn h,char *p)函數(shù)功能:判斷鏈表是否非空,即代表了一個(gè)真正的多項(xiàng)式。函數(shù)參數(shù):Polyn h多項(xiàng)式鏈表的頭指針char *p多項(xiàng)式名函數(shù)返回值:0鏈表為空1鏈表不為空(13)比較多項(xiàng)式兩項(xiàng)關(guān)系函數(shù):ItemComp函數(shù)格式:int ItemComp(Item x Item y)函數(shù)功能:根據(jù)兩個(gè)多項(xiàng)式項(xiàng)的指數(shù)判斷它們的關(guān)系。函數(shù)參數(shù):Item x表示多項(xiàng)式項(xiàng)的變量Item y表示多項(xiàng)式項(xiàng)

14、的變量函數(shù)返回值:-1x項(xiàng)的指數(shù)小于y項(xiàng)的指數(shù)0x項(xiàng)的指數(shù)等于y項(xiàng)的指數(shù)1x項(xiàng)的指數(shù)大于y項(xiàng)的指數(shù)五、部分算法描述兩個(gè)多項(xiàng)式相加運(yùn)算的算法參見(jiàn)教科書(shū)的描述。兩個(gè)多項(xiàng)式相減運(yùn)算算法與多項(xiàng)式相加運(yùn)算的算法結(jié)構(gòu)一致,只是把Q(x)多項(xiàng)式的結(jié)點(diǎn)作為獨(dú)立的一項(xiàng)時(shí),其系數(shù)應(yīng)改變其正/負(fù)號(hào)。這里只對(duì)兩個(gè)多項(xiàng)式相乘運(yùn)算的算法加以描述。兩個(gè)多項(xiàng)式相乘運(yùn)算的基本原理是:用Q(x)多項(xiàng)式的每一項(xiàng)分別去乘P(x)多項(xiàng)式的每一項(xiàng),并將乘得得結(jié)果放入結(jié)果多項(xiàng)式中。若結(jié)果多項(xiàng)式中有指數(shù)相同的項(xiàng),則應(yīng)把它們合并為一項(xiàng)。這實(shí)際上是運(yùn)用加法運(yùn)算來(lái)實(shí)現(xiàn)乘法運(yùn)算,實(shí)現(xiàn)時(shí)有兩種不同的方法把每次計(jì)算的結(jié)果與原來(lái)的中間結(jié)果進(jìn)行相加?!舅惴?/p>

15、1】基本思想:把Q(x)多項(xiàng)式的每一項(xiàng)分別去乘P(x)多項(xiàng)式的每一項(xiàng)所得到的每一個(gè)結(jié)果(一個(gè)結(jié)點(diǎn))插入到結(jié)果多項(xiàng)式中,若結(jié)果多項(xiàng)式中無(wú)相同指數(shù)的項(xiàng),則生成一個(gè)新結(jié)點(diǎn)插入;若有相同指數(shù)的項(xiàng),則系數(shù)相加。算法如圖1-3所示。函數(shù)接口:傳入多項(xiàng)式鏈表指針h1,h2初始化結(jié)果多項(xiàng)式鏈表h3Pb=h2-next;Pa=h1-next; Expn=pb-expn+pa-expn;Coef=pb-coef*pa-coefCreateItem(s); s-coef=coef;s-expn=expn;insert(pp,s);While(Pb)While(Pa)InsertLocate(head,expn,&p

16、p)pp-coef=pp-coef+pa-coefpa=pa-nextpb=pb-nextreturn(h3)圖1-3 兩個(gè)多項(xiàng)式相乘算法1描述【算法2】基本思想:把Q(x)多項(xiàng)式的每一項(xiàng)分別去乘P(x)多項(xiàng)式得到一個(gè)新的多項(xiàng)式,然后把新多項(xiàng)式與結(jié)果多項(xiàng)式相加。算法如圖3所示。函數(shù)接口:傳入多項(xiàng)式鏈表指針h1,h2初始化結(jié)果多項(xiàng)式鏈表h3Pb=h2-next;pa=pa-nextWhile(Pb)While(Pa)return(h3)Pa=h1-next; CreateItem(h4);/初始化鏈表h4申請(qǐng)結(jié)點(diǎn)ss-expn=pb-expn+pa-expn;s-coef=pb-coef*pa-

17、coef把結(jié)點(diǎn)s插入到鏈表h4的尾部pb=pb-next多項(xiàng)式h3與h4相加,結(jié)果為h5撤消鏈表h3和h4,h5=h3圖1-4 兩個(gè)多項(xiàng)式相乘算法2描述七、思考題 修改一元多項(xiàng)式相加運(yùn)算的函數(shù),實(shí)現(xiàn):1、 兩個(gè)有序表合并為一個(gè)有序表。2、 假設(shè)具有整數(shù)值的集合用有序的線性鏈表表示,實(shí)現(xiàn)求兩個(gè)集合的聯(lián)合運(yùn)算,要求結(jié)果集合中不能有兩個(gè)值相同的元素。八、部分函數(shù)代碼【說(shuō)明】:為了使學(xué)生掌握復(fù)雜程序設(shè)計(jì)的基本方法和程序的結(jié)構(gòu),下面給出了幾乎所有的輔助函數(shù)的程序代碼,學(xué)生只需要完成稀疏多項(xiàng)式的加、減、乘運(yùn)算的程序代碼編寫(xiě)工作。希望學(xué)生通過(guò)下面程序代碼的閱讀、編碼、測(cè)試和運(yùn)算,掌握一個(gè)完整程序的基本結(jié)構(gòu)和

18、設(shè)計(jì)一個(gè)程序的基本方法。#include #include #include typedef struct Item double coef; int expn; struct Item *next; Item,*Polyn;#define CreateItem(p) p=(Item *)malloc(sizeof(Item);#define DeleteItem(p) free(void *)p);/*/* 判斷選擇函數(shù) */*/int Select(char *str) char ch; printf(%sn,str); printf(Input Y or N:); do ch=getch

19、();while(ch!=Y&ch!=y&ch!=N&ch!=n); printf(n); if(ch=Y|ch=y) return(1); else return(0); /*/* 插入位置定位函數(shù) */*/int InsertLocate(Polyn h,int expn,Item *p) Item *pre,*q; pre=h; q=h-next; while(q&q-expnnext; if(!q) *p=pre; return(1); else if(q-expn=expn) *p=q; return(0); else *p=pre; return(-1); /*/* 插入結(jié)點(diǎn)函數(shù)

20、*/*/void insert(Item *pre,Item *p) p-next=pre-next; pre-next=p; /*/* 輸入多項(xiàng)式 */*/Polyn Input(void) double coef; int expn,flag; Item *h,*p,*q,*pp; CreateItem(h);/產(chǎn)生頭結(jié)點(diǎn) h-next=NULL; printf(input coef and expn(if end ,expn=-1)n); while(1) scanf(%lf%d,&coef,&expn); /輸入多項(xiàng)式的系數(shù)和指數(shù) if(expn=-1) break; /若指數(shù)為1,表

21、示輸入結(jié)束 if(InsertLocate(h,expn,&pp)/返回值非0表示插入新結(jié)點(diǎn) CreateItem(p); p-coef=coef; p-expn=expn; insert(pp,p); else if(Select(has the same expn,Replace older value?) pp-coef=coef; /指數(shù)相同,替換系數(shù) return h; /*/* 撤消多項(xiàng)式 */*/void Destroy(Polyn h) Item *p=h,*q; while(p!=NULL) q=p; p=p-next; DeleteItem(q); /*/* 輸出多項(xiàng)式 *

22、/*/void Output(Polyn h,char *title) int flag=1; Item *p=h-next; printf(%s=,title); while(p) if(flag) /表示是否是多項(xiàng)式的第一項(xiàng) flag=0; if(p-expn=0) printf(%.2lf,p-coef); else printf(%.2lfx%d,p-coef,p-expn); else if(p-coef0) printf(+); if(p-expn=0) printf(%.2lf,p-coef); else printf(%.2lfx%d,p-coef,p-expn); p=p-n

23、ext; printf(n); /*/* 判斷兩個(gè)多項(xiàng)式項(xiàng)的關(guān)系 */*/int ItemComp(Item x,Item y) if(x.expnnext,*pb=h2-next,*s,*s0; double coef; CreateItem(head); last=head; 實(shí)現(xiàn)兩個(gè)多項(xiàng)式相加運(yùn)算的代碼(由學(xué)生獨(dú)立完成) last-next=NULL; return head; /*/* 兩多項(xiàng)式多項(xiàng)式相減 */*/Polyn SubtractPolyn(Polyn h1,Polyn h2) int flag; Item *head,*last,*pa=h1-next,*pb=h2-ne

24、xt,*s,*s0; double coef; CreateItem(head); last=head;實(shí)現(xiàn)兩個(gè)多項(xiàng)式相減運(yùn)算的代碼(由學(xué)生獨(dú)立完成) last-next=NULL; return head; /*/* 兩多項(xiàng)式多項(xiàng)式相乘 */*/Polyn MultPolyn(Polyn h1,Polyn h2) /兩個(gè)多項(xiàng)式相乘 int item,expn; Item *head,*pa,*pb=h2-next,*s,*pp; double coef; CreateItem(head); head-next=NULL;實(shí)現(xiàn)兩個(gè)多項(xiàng)式相乘運(yùn)算的代碼(由學(xué)生獨(dú)立完成) return head;

25、 /*/* 菜單選擇 */*/int menu(void) int num; clrscr(); printf(%20c1-create P(x)n, ); printf(%20c2-create Q(x)n, ); printf(%20c3-p(x)+Q(x)n, ); printf(%20c4-P(x)-Q(x)n, ); printf(%20c5-p(x)*Q(x)n, ); printf(%20c6-print P(x)n, ); printf(%20c7-print Q(x)n, ); printf(%20c8-print P(x)+Q(x)n, ); printf(%20c9-pr

26、int P(x)-Q(x)n, ); printf(%20c10-print P(x)*Q(x)n, ); printf(%20c11-Quitn, ); printf( please select 1,2,3,4,5,6,7,8,9,10,11:); do scanf(%d,&num); while(num11); return(num); /*/* 判斷多項(xiàng)式是否存在 */*/int PolynNotEmpty(Polyn h,char *p) if(h=NULL) printf(%s is not exist!n,p); getchar();return(0); else return(

27、1); /*/* 主函數(shù) */*/void main() int num; Polyn h1=NULL; /p(x) Polyn h2=NULL; /Q(x) Polyn h3=NULL; /P(x)+Q(x) Polyn h4=NULL; /P(x)-Q(x) Polyn h5=NULL; /P(x)*Q(x) while(1) num=menu(); getchar(); switch(num) case 1: /輸入第一個(gè)多項(xiàng)式,若多項(xiàng)式存在,首先撤消然后再輸入 if(h1!=NULL) if(Select(P(x) is not Empty,Create P(x) again?) De

28、stroy(h1); h1=Input(); else h1=Input(); break; case 2: /輸入第二個(gè)多項(xiàng)式,若多項(xiàng)式存在,首先撤消然后再輸入 if(h2!=NULL) if(Select(Q(x) is not Empty,Create Q(x) again?) Destroy(h2); h2=Input(); else h2=Input(); break; case 3: /兩多項(xiàng)式相加 if(PolynNotEmpty(h1,p(x)&PolynNotEmpty(h2,Q(X) h3=AddPolyn(h1,h2); Output(h3,P(x)+Q(X); printf(P(x)+Q(x) has finished!n); getchar(); break; case 4:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論