![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式加減乘計(jì)算_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/6782e964-3e89-4090-a1ae-0278f2f50469/6782e964-3e89-4090-a1ae-0278f2f504691.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式加減乘計(jì)算_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/6782e964-3e89-4090-a1ae-0278f2f50469/6782e964-3e89-4090-a1ae-0278f2f504692.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式加減乘計(jì)算_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/6782e964-3e89-4090-a1ae-0278f2f50469/6782e964-3e89-4090-a1ae-0278f2f504693.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式加減乘計(jì)算_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/6782e964-3e89-4090-a1ae-0278f2f50469/6782e964-3e89-4090-a1ae-0278f2f504694.gif)
![數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式加減乘計(jì)算_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/6782e964-3e89-4090-a1ae-0278f2f50469/6782e964-3e89-4090-a1ae-0278f2f504695.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)多項(xiàng)式計(jì)算 班級(jí): 學(xué)號(hào): 姓名: 指導(dǎo)老師: 多項(xiàng)式計(jì)算1、 問(wèn)題描述能夠按照指數(shù)降序排列建立多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加、相減和相乘,并將結(jié)果輸出。2、 設(shè)計(jì)思路這個(gè)程序的關(guān)鍵是多項(xiàng)式的創(chuàng)建和排列,以及相乘時(shí)系數(shù)相乘和指數(shù)相加、相加時(shí)相同指數(shù)的系數(shù)相加、相減時(shí)相同指數(shù)的系數(shù)相減。由于多項(xiàng)式擁有指數(shù)和系數(shù)(假設(shè)基數(shù)已定),所以可以定義一個(gè)包含指數(shù)系數(shù)的結(jié)構(gòu)體,用單鏈表存儲(chǔ)多項(xiàng)式的數(shù)據(jù),所以結(jié)構(gòu)體包含next指針。數(shù)據(jù)插入時(shí)比較兩數(shù)的指數(shù),按照降序排序,從表頭的next開(kāi)始,直至找到合適的位置,然后開(kāi)始鏈表中數(shù)值的插入,如果相等則直接將指數(shù)相加,如果大于就將新數(shù)據(jù)插入到當(dāng)前
2、指向的前面,否則將新數(shù)據(jù)插入到最后。輸入完數(shù)據(jù)后選擇計(jì)算方式(相乘、相加、相減),多項(xiàng)式運(yùn)算時(shí)要循環(huán)遍歷整個(gè)多項(xiàng)式,多項(xiàng)式的每一組數(shù)據(jù)都要和另一個(gè)多項(xiàng)式整組數(shù)據(jù)相運(yùn)算(每一個(gè)運(yùn)算值都存儲(chǔ)到新建的“多項(xiàng)式”鏈表中),直到兩個(gè)多項(xiàng)式都遍歷完結(jié)束。3、 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)在模擬多項(xiàng)式對(duì)象時(shí),為了簡(jiǎn)化處理,只取最核心的兩個(gè)數(shù)據(jù):多項(xiàng)式的系數(shù)和指數(shù)。前面提到,要用單鏈表操作,所以要加上個(gè)next指針,再由該結(jié)構(gòu)體定義一個(gè)結(jié)點(diǎn)類型和指針類型。具體數(shù)據(jù)結(jié)構(gòu)定義如下:typedef struct nodeint xs; /*系數(shù)*/int zs;/*指數(shù)*/struct node * next; /*next指針*
3、/Dnode,* Dnodelist;4、 功能函數(shù)設(shè)計(jì)(1)鏈表初始化函數(shù)Creat_node()帶有頭結(jié)點(diǎn)的頭指針指向空(NULL)。(2)多項(xiàng)式數(shù)據(jù)的創(chuàng)建函數(shù)Creat_Dmeth()當(dāng)鏈表初始化成功后,開(kāi)始創(chuàng)建多項(xiàng)式。分別循環(huán)輸入兩個(gè)多項(xiàng)式的系數(shù)和指數(shù),其中要用到插入函數(shù)。(3)數(shù)據(jù)的插入函數(shù)Insert_node()當(dāng)創(chuàng)建多項(xiàng)式時(shí),要用到此函數(shù),即利用插入的方式將多項(xiàng)式的數(shù)據(jù)連接起來(lái)。再輸入一組數(shù)據(jù)后,程序自動(dòng)調(diào)用此函數(shù),插入時(shí)也進(jìn)行著排序,從表頭的next開(kāi)始,一一比較指數(shù)大小,直到大于或等于當(dāng)前指向的數(shù)據(jù)或遍歷完所有數(shù)據(jù)時(shí)停止,然后開(kāi)始鏈表中數(shù)值的插入,如果相等則直接將指數(shù)相加,
4、如果大于就將新數(shù)據(jù)插入到當(dāng)前指向的前面,否則將新數(shù)據(jù)插入到最后。(4)多項(xiàng)式的顯示函數(shù)Show()從多項(xiàng)式表頭的next開(kāi)始,直到指向空(NULL),將系數(shù)與指數(shù)一一顯示。(5)選擇運(yùn)算方式的函數(shù)select()三種選擇:1為相乘,2為相加,3為相減;每一種選擇調(diào)用相應(yīng)的運(yùn)算函數(shù)。(6)多項(xiàng)式的運(yùn)算函數(shù):新建鏈表存儲(chǔ)計(jì)算后的多項(xiàng)式1、多項(xiàng)式相乘Mulresult()創(chuàng)建兩個(gè)指針?lè)謩e指向兩個(gè)多項(xiàng)式表頭的next,使用兩個(gè)while函數(shù)嵌套循環(huán),遍歷每一組數(shù)據(jù),每遍歷一次都將兩組數(shù)據(jù)的系數(shù)相乘,指數(shù)相加,再利用插入函數(shù)將系數(shù)與指數(shù)存儲(chǔ)到新建多項(xiàng)式的鏈表中。2、多項(xiàng)式相加Addresult()創(chuàng)建兩
5、個(gè)指針?lè)謩e指向兩個(gè)多項(xiàng)式表頭的next,分別使用兩個(gè)while函數(shù)獨(dú)自循環(huán),遍歷各自的每一組數(shù)據(jù),每遍歷一次都將系數(shù)與指數(shù)存儲(chǔ)到新建多項(xiàng)式的鏈表中。因?yàn)榇鎯?chǔ)時(shí)利用到插入函數(shù),而插入函數(shù)中有相同指數(shù)的系數(shù)相加功能,所以直接將兩個(gè)多項(xiàng)式的數(shù)據(jù)依次插入到新的多項(xiàng)式中即可完成多項(xiàng)式相加。3、多項(xiàng)式相減Subresult()創(chuàng)建兩個(gè)指針?lè)謩e指向兩個(gè)多項(xiàng)式表頭的next,以兩個(gè)指針同時(shí)不為空為條件循環(huán)遍歷,如果當(dāng)前多項(xiàng)式1的指數(shù)小于多項(xiàng)式2,則將當(dāng)前多項(xiàng)式2的系數(shù)置負(fù),指數(shù)不變,存入新建多項(xiàng)式中,指向多項(xiàng)式2的指針指向下一個(gè);如果如果當(dāng)前多項(xiàng)式1的指數(shù)大于多項(xiàng)式2,則將當(dāng)前多項(xiàng)式1的系數(shù)指數(shù)不變,存入新建
6、多項(xiàng)式中,指向多項(xiàng)式1的指針指向下一個(gè);否則將多項(xiàng)式1的系數(shù)減去2的系數(shù)后存入新建多項(xiàng)式中,指數(shù)不變存入,再將兩個(gè)指針同時(shí)指向下一個(gè)。結(jié)束循環(huán)后判斷是哪一個(gè)多項(xiàng)式遍歷完了,將未遍歷完的多項(xiàng)式剩下的數(shù)據(jù)全部插入到新建多項(xiàng)式中。(7)主函數(shù)main()創(chuàng)建兩個(gè)多項(xiàng)式的鏈表并且初始化,分別調(diào)用相應(yīng)的多項(xiàng)式創(chuàng)建函數(shù),創(chuàng)建成功后選擇運(yùn)算方式,再將運(yùn)算結(jié)果輸出顯示。5、 程序代碼#include<stdio.h>#include<stdlib.h>typedef struct nodeint xs;int zs;struct node * next;Dnode,* Dnodelis
7、t; /*定義結(jié)構(gòu)體*/Dnodelist Creat_node(void) /*鏈表初始化*/Dnodelist D;D=(Dnodelist)malloc(sizeof(Dnode);if(D)D->next=NULL;return D;int Insert_node(Dnodelist D,int xs,int zs) /*插入函數(shù)*/Dnodelist p;Dnodelist q;Dnodelist r;p=D;while(p->next) r=p;p=p->next;if(zs=p->zs) /*指數(shù)相等,系數(shù)直接相加,結(jié)束*/p->xs=p->x
8、s+xs;return 1;else if(zs>p->zs) /*指數(shù)大于當(dāng)前數(shù)據(jù)的,將數(shù)據(jù)插入當(dāng)前數(shù)據(jù)之前,結(jié)束*/q=Creat_node();q->xs=xs;q->zs=zs;r->next=q;q->next=p;return 1;/*while(p->next)*/q=Creat_node(); /*要插入的數(shù)據(jù)指數(shù)最小,直接插入至鏈表最后*/q->xs=xs;q->zs=zs;q->next=p->next;p->next=q;return 1;free(p);free(q);free(r);Dnodeli
9、st Creat_Dmeth(int length) /*創(chuàng)建多項(xiàng)式*/int i,m,n;Dnodelist D;D=Creat_node();for(i=0;i<length;i+) /*以三組數(shù)據(jù)為例*/scanf("%d,%d",&m,&n);Insert_node(D,m,n); /*調(diào)用插入函數(shù),將輸入的系數(shù)指數(shù)插入鏈表*/return D;Dnodelist Mulresult(Dnodelist D1,Dnodelist D2) /*多項(xiàng)式相乘*/Dnodelist D;Dnodelist p,q;int x,z;D=Creat_nod
10、e();p=D1->next;q=D2->next;while(q)while(p)x=p->xs*q->xs; /*系數(shù)相乘,指數(shù)相加*/z=p->zs+q->zs;Insert_node(D,x,z);p=p->next;p=D1->next;q=q->next;return D;Dnodelist Addresult(Dnodelist D1,Dnodelist D2) /*多項(xiàng)式相加*/Dnodelist D;Dnodelist p,q;int x,z;D=Creat_node();p=D1->next;q=D2->ne
11、xt;while(q)x=q->xs;z=q->zs;Insert_node(D,x,z);q=q->next;while(p)x=p->xs;z=p->zs;Insert_node(D,x,z);p=p->next; /*直接插入數(shù)據(jù),利用插入函數(shù)可完成該功能*/return D;Dnodelist Subresult(Dnodelist D1,Dnodelist D2) /*多項(xiàng)式相減*/Dnodelist D;Dnodelist p,q;int x,z;D=Creat_node();p=D1->next;q=D2->next;while(p
12、&&q)if(p->zs)<(q->zs) /*指數(shù)?。?的數(shù)據(jù)在2中不存在),直接插入*/x=-(q->xs); /*由于是式1減式2,所以系數(shù)置負(fù)*/z=q->zs;Insert_node(D,x,z);q=q->next;else if(p->zs)>(q->zs) /*指數(shù)大(2的數(shù)據(jù)在1中不存在),直接插入*/ x=p->xs;z=p->zs;Insert_node(D,x,z);p=p->next;else /*指數(shù)相同的先將系數(shù)相減,再插入*/z=q->zs;x=(p->xs)-(
13、q->xs);Insert_node(D,x,z);p=p->next;q=q->next;/*while(p&&q)*/while(p)x=p->xs;z=p->zs;Insert_node(D,x,z);p=p->next;while(q)x=-(q->zs);z=q->zs;Insert_node(D,x,z);q=q->next; /*將未遍歷完的數(shù)據(jù)直接插入*/return D;Dnodelist select(Dnodelist D1,Dnodelist D2) /*選擇函數(shù)*/Dnodelist D;int s
14、;printf("請(qǐng)選擇:n1:相乘n2:相加n3:相減n");scanf("%d",&s);switch(s)case 1: D=Mulresult(D1,D2); /*調(diào)用相乘函數(shù)*/printf("相乘結(jié)果(系數(shù),指數(shù)):n");break;case 2: D=Addresult(D1,D2); /*調(diào)用相加函數(shù)*/printf("相加結(jié)果(系數(shù),指數(shù)):n");break;case 3: D=Subresult(D1,D2); /*調(diào)用相減函數(shù)*/printf("相減結(jié)果(系數(shù),指數(shù)):n
15、");break;default:printf("無(wú)此選項(xiàng)n");break;return D;void Show(Dnodelist D) /*顯示(輸出)函數(shù)*/Dnodelist r;r=D->next;while(r)printf("(%d,%d)+",r->xs,r->zs);r=r->next;printf("n");void main()Dnodelist D1,D2,D;int length;D1=Creat_node();D2=Creat_node(); /*D1為多項(xiàng)式1,D2為多
16、項(xiàng)式2,初始化*/printf("輸入多項(xiàng)式1的組數(shù):n”);scanf(“%d”,&length);printf("輸入多項(xiàng)式1系數(shù),指數(shù):(%d組)n",length);D1=Creat_Dmeth(length); /*創(chuàng)建多項(xiàng)式1*/printf("輸入多項(xiàng)式2的組數(shù):n”);scanf(“%d”,&length);printf("輸入多項(xiàng)式2系數(shù),指數(shù):(%d組)n",length);D2=Creat_Dmeth(length); /*創(chuàng)建多項(xiàng)式2*/ D=select(D1,D2); /*選擇運(yùn)算方式*/Show(D); /*輸出顯示*/getch();6、 運(yùn)行與測(cè)試程序運(yùn)行時(shí),先提示第一個(gè)多項(xiàng)式的組數(shù),確定組數(shù)后才可輸入相應(yīng)的數(shù)據(jù),之后是多項(xiàng)式2;輸入完數(shù)據(jù)后,程序提示選擇運(yùn)算方式。選擇錯(cuò)誤則提示“無(wú)此選項(xiàng)”,運(yùn)行結(jié)束
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年公司注銷委托代理服務(wù)協(xié)議
- 2025年信用擔(dān)保與抵押合同
- 2025年農(nóng)副產(chǎn)品直銷業(yè)務(wù)協(xié)議
- 2025年農(nóng)業(yè)用地承包權(quán)抵債協(xié)議范本
- 2025年優(yōu)惠協(xié)議價(jià)格
- 2025年會(huì)議室重構(gòu)性合作協(xié)議
- 2025年光通信電纜項(xiàng)目規(guī)劃申請(qǐng)報(bào)告范文
- 2025年信息安全集成項(xiàng)目合作協(xié)議
- 2025年個(gè)人財(cái)產(chǎn)抵押巨額借款合同示范文本
- 2025年企業(yè)電器租賃合同
- 湖北省普通高中2022-2023學(xué)年高一下學(xué)期學(xué)業(yè)水平合格性考試模擬化學(xué)(一)含解析
- 銀行案件防控培訓(xùn)課件
- 裝配式混凝土結(jié)構(gòu)施工技術(shù)講課課件
- 小型屠宰場(chǎng)可行性研究報(bào)告
- 急性呼吸道感染護(hù)理查房課件
- 物業(yè)品質(zhì)檢查標(biāo)準(zhǔn)及評(píng)分細(xì)則
- 密閉取芯完整
- 駕駛服務(wù)外包投標(biāo)方案(完整版)
- 全日制普通高級(jí)中學(xué)體育教學(xué)大綱
- 2023年敬老院重陽(yáng)節(jié)老年人活動(dòng)策劃方案通用
- 《Web前端綜合實(shí)戰(zhàn)》實(shí)訓(xùn)-課程標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論