![數(shù)據(jù)結(jié)構(gòu)線性表的應(yīng)用實(shí)驗(yàn)報(bào)告_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/aa76e599-6c8f-4b06-adee-a7df0e063805/aa76e599-6c8f-4b06-adee-a7df0e0638051.gif)
![數(shù)據(jù)結(jié)構(gòu)線性表的應(yīng)用實(shí)驗(yàn)報(bào)告_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/aa76e599-6c8f-4b06-adee-a7df0e063805/aa76e599-6c8f-4b06-adee-a7df0e0638052.gif)
![數(shù)據(jù)結(jié)構(gòu)線性表的應(yīng)用實(shí)驗(yàn)報(bào)告_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/aa76e599-6c8f-4b06-adee-a7df0e063805/aa76e599-6c8f-4b06-adee-a7df0e0638053.gif)
![數(shù)據(jù)結(jié)構(gòu)線性表的應(yīng)用實(shí)驗(yàn)報(bào)告_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/aa76e599-6c8f-4b06-adee-a7df0e063805/aa76e599-6c8f-4b06-adee-a7df0e0638054.gif)
![數(shù)據(jù)結(jié)構(gòu)線性表的應(yīng)用實(shí)驗(yàn)報(bào)告_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/aa76e599-6c8f-4b06-adee-a7df0e063805/aa76e599-6c8f-4b06-adee-a7df0e0638055.gif)
版權(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)報(bào)告課程名稱數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目 線性表的應(yīng)用實(shí)驗(yàn)儀器PCM系 別 電子信息與通信學(xué)院專業(yè) 班級(jí)/學(xué)號(hào)學(xué)生姓名 實(shí)驗(yàn)日期成績(jī)指導(dǎo)教師實(shí)驗(yàn)一.線性表的應(yīng)用1 .實(shí)驗(yàn)?zāi)康模赫莆站€性鏈表的存儲(chǔ)、運(yùn)算及應(yīng)用。利用鏈表實(shí)現(xiàn)一元多項(xiàng)式計(jì)算。2 .實(shí)驗(yàn)內(nèi)容:1)編寫(xiě)函數(shù),實(shí)現(xiàn)用鏈表結(jié)構(gòu)建立多項(xiàng)式;2)編寫(xiě)函數(shù),實(shí)現(xiàn)多項(xiàng)式的加法運(yùn)算;3)編寫(xiě)函數(shù),實(shí)現(xiàn)多項(xiàng)式的顯示;4)測(cè)試:編寫(xiě)主函數(shù),它定義并建立兩個(gè)多項(xiàng)式,顯 示兩個(gè)多項(xiàng)式,然后將它們相加并顯示結(jié)果。變換 測(cè)試用的多項(xiàng)式,檢查程序的執(zhí)行結(jié)果。選做內(nèi)容:修改程序,選擇實(shí)現(xiàn)以下功能:5)多項(xiàng)式求值:編寫(xiě)一個(gè)函數(shù),根據(jù)給定的x值計(jì)算并返回多項(xiàng)式f(x)的
2、值。測(cè)試該函數(shù)(從終端輸入 一個(gè)x的值,調(diào)用該函數(shù)并顯示返回結(jié)果)。6)多項(xiàng)式相減:編寫(xiě)一個(gè)函數(shù),求兩個(gè)多項(xiàng)式相減的 多項(xiàng)式。7)多項(xiàng)式相乘:編寫(xiě)一個(gè)函數(shù),求兩個(gè)多項(xiàng)式的乘積 多項(xiàng)式。3 .算法說(shuō)明:1)多項(xiàng)式的建立、顯示和相加算法見(jiàn)講義??尚薷娘@示函數(shù),使輸由的多項(xiàng)式更符合表達(dá)規(guī)范2)多項(xiàng)式減法:同次項(xiàng)的系數(shù)相減(缺項(xiàng)的系數(shù)是0)例如 a(x)=-5x 2+2x+3, b(x)= -4x3+3x,則 a(x)-b(x)=4x3-5x 2-x+3。提示:a(x)-b(x) = a(x)+(-b(x)。3)多項(xiàng)式乘法:兩個(gè)多項(xiàng)式的相乘是“系數(shù)相乘,指 數(shù)相加”。算法思想是用一個(gè)多項(xiàng)式中的各項(xiàng)分別
3、與 另一個(gè)多項(xiàng)式相乘,形成多個(gè)多項(xiàng)式,再將它們累 加在一起。例如, a(x)=-5x 2+2x+3, b(x)=-4x 3+3x, 則a(x)*b(x)(-4x 3)*(-5x 2+2x+3)+(3x)*(-5x2+2x+3)(20x 5-8x 4-12x 3)+(-15x 3+6x2+9x)20x5-8x 4-27x 3+6x2+9x。4 .實(shí)驗(yàn)步驟:根據(jù)實(shí)驗(yàn)報(bào)告的要求,我對(duì)文件夾里的 C文件進(jìn)行了豐富和修改,步驟如下:鏈表結(jié)構(gòu)建立多項(xiàng)式:typedef struct polynode float coef; /系數(shù)int exp; /指數(shù)struct polynode *next; /下結(jié)
4、點(diǎn)指針 PNode;編寫(xiě)函數(shù),實(shí)現(xiàn)多項(xiàng)式的加法運(yùn)算;PNode * PolyAdd (PNode *f1, PNode *f2) / 實(shí)現(xiàn)加法功臺(tái)匕 目匕。 / 實(shí)現(xiàn)兩多項(xiàng)式(頭指針?lè)謩e為fl和f2)相加,返回和多項(xiàng)式f3=f1+f2PNode *pa=f1->next,*pb=f2->next,*pc,*f3,*q;int exp;建立頭指針?lè)祷仡^指針float coef;f3=(PNode *)malloc(sizeof(PNode); /f3->exp=-1; /對(duì)頭指針初始化f3->next=f3;pc=f3; / 將pc指向頭指針while (pa->e
5、xp!=-1 | pb->exp!=-1) /時(shí),跳由循環(huán)if (pa->exp>pb->exp)exp=pa->exp;coef=pa->coef;pa=pa->next;else if (pa->exp<pb->exp)exp=pb->exp;coef=pb->coef;pb=pb->next;elseexp=pa->exp;coef=pa->coef+pb->coef;pa=pa->next;pb=pb->next;if (coef!=0)q=(PNode *)malloc(siz
6、eof(PNode); /建立新的q指針存放負(fù)指數(shù)的指針q->exp=exp;q->coef=coef; / 將q插入鏈表中q->next=pc->next;pc->next=q;pc=q;return f3; /返回實(shí)現(xiàn)多項(xiàng)式的顯示;void ShowPloy(PNode *h)/用if語(yǔ)句判斷,當(dāng)指數(shù)為。是,只輸由系數(shù);當(dāng) 指數(shù)為1時(shí),輸由系數(shù)和 X;當(dāng)系數(shù)為1時(shí),輸由X 和指數(shù)。h=paixu(h); /整理函數(shù),使之降曷排列PNode *p=h->next;if(p=h)printf("表達(dá)式為空n");return;if(p-&
7、gt;coef=1)printf("xA%d",p->exp);/用 if 語(yǔ)句判斷,若輸由xAo和xA1值為。和1直接輸由數(shù)據(jù)。else if(p->exp=1)printf("%gx”, p->coef);else if(p->exp=0)printf("%g”, p->coef);教育資料elseprintf("%gxA%d", p->coef, p->exp);p=p->next;while (p!=h)if(p->coef>0)printf("+"
8、;);/系數(shù)為負(fù),不用輸由加號(hào)if(p->coef=1)printf("xA%d",p->exp);else if(p->exp=1)printf("%gx", p->coef);else if(p->exp=0)printf("%g", p->coef);elseprintf("%gxA%d", p->coef, p->exp);p=p->next;printf("n");主函數(shù)void main()PNode *F1,*F2,*F3;fl
9、oat x;F1=CreatPoly();F2=CreatPoly();printf("nf1(x)=");ShowPloy(F1);printf("nf2(x)=");ShowPloy(F2);F3=PolyAdd(F1,F2);F3=paixu(F3);printf("nf1+f2=:");ShowPloy(F3);F3=PolySub(F1,F2);printf("nf1-f2=:");ShowPloy(F3);F3=PolyMult(F1,F2);printf("nf1*f2=:");S
10、howPloy(F3);printf("nx 的值為:");scanf("%f", &x);printf("nf1(x=%.3f)=%.3fn”,x,PolyValue(F1,x);多項(xiàng)式求值double PolyValue(PNode *h, float x) /編寫(xiě)算法,求以h為頭指針的多項(xiàng)式在 x點(diǎn)的值并返回 該值。double f=0.0;求生 f=f(x);PNode *pa;h=paixu(h);pa=h->next;while(pa->exp!=-1) / 使用 f+=coef*pow ,返回 ff+=(pa-
11、>coef)*pow(x,pa->exp);pa=pa->next;return f;多項(xiàng)式相減PNode * PolySub(PNode *f1,PNode *f2)/編寫(xiě)此算法,實(shí)現(xiàn)兩多項(xiàng)式(頭指針?lè)謩e為fl和f2)相減,返回差多項(xiàng)式f3=f1-f2 oPNode *pa=f1->next,*pb=f2->next,*pc,*f3,*q,*head;f3=(PNode *)malloc(sizeof(PNode); /建立頭指針f3->exp=-1; / 頭指針的初始化f3->next=f3;pc=f3; /pc指向頭指針,便于操作。while(p
12、b->exp!=-1) /返回頭指針時(shí),跳由循環(huán)。q=(PNode *)malloc(sizeof(PNode); /建立新的q指針存放負(fù)指數(shù)的指針q->coef=pb->coef*(-1);q->exp=pb->exp; / 將q插入鏈表中q->next=pc->next;pc->next=q;pc=q;pb=pb->next;head=PolyAdd(f1,f3); / 調(diào)用加法函數(shù)做減法return head; / 返回頭指針多項(xiàng)式相乘PNode * PolyMult(PNode *f1,PNode *f2)/實(shí)現(xiàn)兩多項(xiàng)式(頭指針?lè)謩e
13、為 fl和f2)相乘,返回乘積 多項(xiàng)式f3=f1*f2 。PNode *pa=f1->next,*pb=f2->next,*pc,*u,*head;int exp;float coef;head=(PNode *)malloc(sizeof(PNode);head->exp=-1;head->next=head;pc=head;while(pa->exp!=-1) /多項(xiàng)式相乘,錄入 u指針,查到頭指針。while(pb->exp!=-1)coef=pa->coef*pb->coef;exp=pa->exp+pb->exp;u=(PN
14、ode *)malloc(sizeof(PNode);u->coef=coef;u->exp=exp;u->next=pc->next;pc->next=u;pc=u;pb=pb->next;pb=pb->next;pa=pa->next;return head; / 返回頭指針程序運(yùn)行截圖曷昌昌 FJ rJI-CJ 號(hào)號(hào)號(hào)i數(shù) 系系系 的的3項(xiàng)項(xiàng)項(xiàng)3口口 B士戶土盧士尸數(shù)數(shù)數(shù)靠系的的的捐項(xiàng)-12 3 - 12 3 承第第第 式式 項(xiàng)項(xiàng)項(xiàng)點(diǎn)作項(xiàng) 的多多多多多項(xiàng)穗瑞項(xiàng)領(lǐng)瑞多請(qǐng)請(qǐng)耍.1清請(qǐng)請(qǐng)globail me mldoublef2<x>
15、=6x2ri*f2":3«rt3 *12x2fi-£2-:3Krt3£1*£2-:10«5 *3Gk*4m的值為;2.»ao>=4s.aasi*ess any hey to continuevoid m U <PModP *F1,*F2,*F3;flojt x;Fl=CreatPoip();“ I'nnfi niiir jiM nn * 1 - Wi n?fc? hphim- 測(cè)試成功!程序完整源代碼如下:#include <stdio.h>#include <stdlib.h>#
16、include <math.h>typedef struct polynode float coef; /系數(shù)int exp; /struct polynode *next; /指數(shù)下一結(jié)點(diǎn)指針 PNode;PNode * paixu(PNode *f) /PNode *p,*q,*r,*p0,*q0;p=f->next;q=p->next;p0=f;q0=p;while(p->exp!=-1) /p值進(jìn)行比較,while(q->exp!=-1) /q一圈 if(p->exp>q->exp) / 移將多項(xiàng)式降哥排列為q的前驅(qū),q與p指數(shù)指數(shù)
17、為頭指針推由循環(huán),q移動(dòng)比較,若p大于q則q后q0=q;q=q->next;若p小于q貝U q插入)else if(p->exp<q->exp) /p N刖(r=q->next;q->next=p0->next;q0->next=r;p0->next=q;p=q;q=r;)else if(p->exp=q->exp) /若相等, p 的 coef與q的相加,然后刪除q節(jié)點(diǎn),釋放q的空間(p->coef+=q->coef;q0->next=q->next;q=q->next;)p0=p;p=p->
18、;next;q=p->next;q0=p; return f;void ShowPloy(PNode *h)/用if語(yǔ)句判斷,當(dāng)指數(shù)為。是,只輸由系數(shù);當(dāng)指數(shù)為1時(shí),輸由系數(shù)和 X;當(dāng)系數(shù)為1時(shí),輸由X和指數(shù)。h=paixu(h); / 整理函數(shù),使之降曷排列PNode *p=h->next;if(p=h)printf("表達(dá)式為空n");return;if(p->coef=1)printf("xA%d",p->exp);/用 if 語(yǔ)句判斷,若輸由xAo和xA1值為0和1直接輸由數(shù)據(jù)。else if(p->exp=1)pr
19、intf("%gx”, p->coef);else if(p->exp=0)printf("%g”, p->coef);elseprintf("%gxA%d", p->coef, p->exp);p=p->next;while (p!=h)if(p->coef>0)printf("+"); /系數(shù)為負(fù),不用輸由加號(hào)if(p->coef=1)printf("xA%d",p->exp);else if(p->exp=1)printf("%gx&
20、quot;, p->coef);else if(p->exp=0)printf("%g", p->coef);elseprintf("%gxA%d", p->coef, p->exp);p=p->next;printf("n");PNode * CreatPoly() /建立多項(xiàng)式鏈表,返回頭指針PNode * head, *p, *s;int i,n;head=(PNode *)malloc(sizeof(PNode);head->exp=-1;p=head;printf(" 多項(xiàng)
21、式的項(xiàng)數(shù)為:");scanf("%d",&n);for(i=1;i<=n; i+)s=(PNode *)malloc(sizeof(PNode);printf(" 請(qǐng)輸入多項(xiàng)式第項(xiàng)的系數(shù)和指數(shù)(用逗號(hào) 隔開(kāi)):",i);scanf("%g,%d”,&s->coef,&s->exp);p->next=s;p=s;p->next=head;return head;void FreePoly(PNode *h)/編寫(xiě)此算法,將以h為頭指針的多項(xiàng)式的鏈表結(jié)點(diǎn)逐個(gè)釋放。PNode *p,*q
22、;p=h->next;while(p->exp)!+-1;q=p->next;free(p);p=q;free(h);return;/Free函數(shù)用于銷毀鏈表,最后指向頭指針,跳由循環(huán)并釋放頭指針。PNode * PolyAdd (PNode *f1, PNode *f2) /實(shí)現(xiàn)加法功能。 /實(shí)現(xiàn)兩多項(xiàng)式(頭指針?lè)謩e為fl和f2)相加,返回和多項(xiàng)式f3=f1+f2PNode *pa=f1->next,*pb=f2->next,*pc,*f3,*q;int exp;建立頭指針?lè)祷仡^指針float coef;f3=(PNode *)malloc(sizeof(PNo
23、de); /f3->exp=-1; /對(duì)頭指針初始化f3->next=f3;pc=f3; / 將pc指向頭指針while (pa->exp!=-1 | pb->exp!=-1) /時(shí),跳由循環(huán)if (pa->exp>pb->exp)exp=pa->exp;coef=pa->coef;pa=pa->next;else if (pa->exp<pb->exp)exp=pb->exp;coef=pb->coef;pb=pb->next;elseexp=pa->exp;coef=pa->coef
24、+pb->coef;pa=pa->next;pb=pb->next;if (coef!=0)q=(PNode *)malloc(sizeof(PNode); /建立新的q指針存放負(fù)指數(shù)的指針q->exp=exp;q->coef=coef; / 將q插入鏈表中q->next=pc->next;pc->next=q;pc=q;return f3; / 返回PNode * PolySub(PNode *f1,PNode *f2)/編寫(xiě)此算法,實(shí)現(xiàn)兩多項(xiàng)式(頭指針?lè)謩e為fl和f2)相減,返回差多項(xiàng)式f3=f1-f2 oPNode *pa=f1->n
25、ext,*pb=f2->next,*pc,*f3,*q,*head;f3=(PNode *)malloc(sizeof(PNode); /建立頭指針f3->exp=-1; /頭指針的初始化f3->next=f3;pc=f3; /pc 指向頭指針,便于操作。while(pb->exp!=-1) /返回頭指針時(shí),跳由循環(huán)。q=(PNode *)malloc(sizeof(PNode); /建立新的q指針存放負(fù)指數(shù)的指針q->coef=pb->coef*(-1);q->exp=pb->exp; / 將q插入鏈表中 q->next=pc->n
26、ext;pc->next=q;pc=q;pb=pb->next;head=PolyAdd(f1,f3); /調(diào)用加法函數(shù)做減法return head; / 返回頭指針PNode * PolyMult(PNode *f1,PNode *f2)/實(shí)現(xiàn)兩多項(xiàng)式(頭指針?lè)謩e為fl和f2)相乘,返回乘積多項(xiàng)式f3=f1*f2 。PNode *pa=f1->next,*pb=f2->next,*pc,*u,*head;int exp;float coef;head=(PNode *)malloc(sizeof(PNode);head->exp=-1;head->next=head;pc=head;while(pa->exp!=-1) /多項(xiàng)式相乘,錄入 u指針,查到頭指針。while(pb->exp!=-1)coef=pa->coef*pb->coef;exp=pa->exp+pb->exp;u=(PNode *)malloc(sizeof(PNode);u->coef=coef;u->exp=exp;u->next=pc->next;pc->next=u;pc=u;pb=pb
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023二年級(jí)語(yǔ)文上冊(cè) 第八單元 23 紙船和風(fēng)箏說(shuō)課稿 新人教版
- 2025駕駛員安全生產(chǎn)聘用合同
- 2025X大學(xué)技術(shù)合同管理辦法
- 2025建筑外墻改造工程合同
- Module 9 Unit 1 We laughed a lot(說(shuō)課稿)-2023-2024學(xué)年外研版(三起)英語(yǔ)五年級(jí)下冊(cè)001
- Unit 1 School Subjects Lesson3(說(shuō)課稿)-2023-2024學(xué)年人教新起點(diǎn)版英語(yǔ)三年級(jí)下冊(cè)
- 公司法律事務(wù)代理合同范例
- 2024-2025學(xué)年高中歷史 第三單元 各國(guó)經(jīng)濟(jì)體制的創(chuàng)新和調(diào)整 第14課 社會(huì)主義經(jīng)濟(jì)體制的建立(1)教學(xué)說(shuō)課稿 岳麓版必修2
- Module 2 Unit 1 I helped my mum.(說(shuō)課稿)-2024-2025學(xué)年外研版(一起)英語(yǔ)四年級(jí)上冊(cè)
- 9小水滴的訴說(shuō) 第二課時(shí) 說(shuō)課稿-2023-2024學(xué)年道德與法治二年級(jí)下冊(cè)(統(tǒng)編版)
- 2023-2024學(xué)年北師大版數(shù)學(xué)八年級(jí)上冊(cè) 期末測(cè)試卷
- 第3篇 助跑 項(xiàng)目六 異形芯片分揀與安裝講解
- 傳統(tǒng)戲劇藝術(shù)與人工智能的創(chuàng)新傳播渠道
- 2024年越南天然食用香料與色素行業(yè)現(xiàn)狀及前景分析2024-2030
- 實(shí)體瘤療效評(píng)價(jià)標(biāo)準(zhǔn)(RECIST11)
- JTT 680.1-2016 船用通信導(dǎo)航設(shè)備的安裝、使用、維護(hù)、修理技術(shù)要求 第1部分:總則
- 教案-中國(guó)書(shū)法史
- 隧道施工-緒論(使用)
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)附答案
- 電力系統(tǒng)動(dòng)態(tài)仿真與建模
- 五年級(jí)口算1000題(打印版)
評(píng)論
0/150
提交評(píng)論