




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、福建農林大學計算機與信息學院(程序設計類課程)實驗報告課程名稱:姓 名:系:專 業(yè):年 級:學 號:指導教師:職 稱:福建農林大學計算機與信息學院實驗報告系: 計算機 專業(yè): 計算機科學與技術 年級: 姓名: 學號: 實驗室號_ 計算機號 實驗一 線性表及其應用(多項式相加、相乘)一、 實驗目的和要求1、 熟悉tc的運行環(huán)境,并可以熟練的使用tc;2、掌握鏈表存儲的方法以及基本操作;3、掌握內存的動態(tài)分配和釋放方法;4、熟悉C語言程序的基本格式與規(guī)范。二、 實驗內容和原理1、實驗內容:設計一個一元多項式的簡單計算程序,其基本功能有:(1)輸入并建立多項式;(2)輸出多項式;(3)多項式的相加減
2、;(4)多項式的相乘。利用單鏈表實現。2、實驗原理:將兩多項式存入鏈表lianbiao1、lianbiao2,用pointer1掃描lianbiao1,pointer2掃描lianbiao2,結果保存在lianbiao3中(用pointer3來創(chuàng)建lianbiao3)三、 實驗環(huán)境硬件:(1)學生用微機(2)多媒體實驗教室(3)局域網環(huán)境軟件:(1)Windows XP中文操作系統(tǒng) (2)Turbo C 3.0四、 算法描述及實驗步驟1、描述1. 定義創(chuàng)建鏈表的函數,然后創(chuàng)建三個鏈表,一個用于存放結果。2. 定義多項式相加的函數實現多項式的相加功能,定義多項式的相乘功能。3. 定義打印鏈表和釋
3、放鏈表的函數。4. 最后在主函數里面調用這些函數,實現多項式的相加和相乘。例子:A(X)=3X+7X6-9X9B(X)=2X-3+7-3X+8X3+X5(1)執(zhí)行加法操作,輸出“l(fā)ianbiao1+lianbiao2:(2,-3) (7,0) (8,5) (1,5) (7,6) (-9,9)”(2)執(zhí)行乘法操作,輸出“l(fā)ianbiao1*lianbiao2:(6,-2) (21,1) (-9,2) (14,3) (55,6) (3,6) (-21,7) (-63,9) (27,10) (56,11) (7,11) (-72,14) (-9,14)”2、框圖3、代碼(注釋)#include &q
4、uot;stdio.h" /* 輸入輸出函數的頭文件 */#include "alloc.h" /* alloc.h是動態(tài)分配內存空間頭文件 */typedef struct node/* 定義節(jié)點,包含兩個數據域(c和e)和一個指針域(*next)*/int c,e;/*c是指多項式的系數, e是項的指數*/struct node *next;/* 定義next為指向下一個結點的指針*/Pn;/*定義Pn類型*/Pn *create()/*創(chuàng)建鏈表*/Pn *pointer,*lianbiao;int n;lianbiao=malloc(sizeof(Pn);/
5、*用malloc動態(tài)分配函數給鏈表分配內存空間*/printf("n:");/*提示用戶輸入多項式的項數*/scanf("%d",&n);/*接收用戶輸入的多項式的項數*/pointer=lianbiao;while(n)/*對n進行判斷,當n不為零時執(zhí)行while循環(huán)語句*/pointer->next=malloc(sizeof(Pn);/*為鏈表新的節(jié)點申請空間*/pointer=pointer->next;/*將pointer下移*/printf("c e:");scanf("%d %d"
6、,&pointer->c,&pointer->e);/*將系數c,指數e存入鏈表中的新節(jié)點*/n-;/*沒當輸入一項時,項數n就減一*/pointer->next=NULL;/*如果pointer指向的下一個結點的指針域為空,說明鏈表已經創(chuàng)建好了*/return lianbiao; void OUT(Pn *lianbiao)/*打印輸出鏈表*/Pn *pointer=lianbiao->next;while(pointer)/*打印出當前的結點系數c和指數e, 直到鏈表為空*/printf("(%d,%d) ",pointer-&g
7、t;c,pointer->e);/*打印出多項式系數c和指數e*/pointer=pointer->next;/*打印出當前結點后,將指針移到下一個節(jié)點*/printf("n");/*用n換行*/void Free(Pn *lianbiao)/*釋放鏈表空間*/Pn *pointer=lianbiao;/*將pointer指向頭節(jié)點*/while(pointer)/*釋放鏈表中的結點,直到pointer鏈表為空時推出循體*/lianbiao=lianbiao->next;/*刪除當前節(jié)點*/free(pointer);/*釋放當前結點的空間*/pointe
8、r=lianbiao;/* 當pointer指向頭結點指針時結束循環(huán)*/Pn *add(Pn *lianbiao1,Pn *lianbiao2)/*多項式相加*/Pn *lianbiao3,*pointer3,*pointer1=lianbiao1->next,*pointer2=lianbiao2->next;/*建立新的鏈表lianbiao3,用于存放lianbiao1與lianbiao2相加后的結果*/int c,e;/*這里的c為多項式相加后的系數,而e為結點相加后的指數*/pointer3=lianbiao3=malloc(sizeof(Pn);/*用malloc為lia
9、nbiao3申請空間*/lianbiao3->next=NULL;while(pointer1|pointer2) /*當pointer1或pointer2不為空時,分成3種情況*/if(pointer1&&(pointer2=NULL|pointer1->e<pointer2->e)/*第一種是當pointer1不空并且pointer2為空,或者pointer1所指的指數e小于pointer2所指的指數e時*/c=pointer1->c;/*將pointer1當前所指結點的系數c賦值給c*/e=pointer1->e;/*將pointer1
10、當前所指結點的系數e賦值給e*/pointer1=pointer1->next;/*將pointer1移到下一結點*/else if(pointer2&&(pointer1=NULL|pointer2->e<pointer1->e) /*第二種是當pointer2不空且pointer1為空或者pointer2所指的指數e小于pointer1所指的指數e時*/c=pointer2->c;e=pointer2->e;pointer2=pointer2->next;else /*第三種是當pointer1、pointer2都不為空且point
11、er1的指數e等于pointer2的指數e時*/c=pointer1->c+pointer2->c;/*將pointer1與pointer2所指的系數相加*/e=pointer1->e;pointer1=pointer1->next;/*將pointer1下移*/pointer2=pointer2->next;/*將pointer2下移*/if(c)pointer3->next=malloc(sizeof(Pn);/*申請新結點的空間*/pointer3=pointer3->next;/*pointer3下移*/pointer3->c=c;/*把
12、系數c放入新結點*/pointer3->e=e;/*把指數e放入新結點*/pointer3->next=NULL;/*當所指的指針為NULL時,鏈表結束*/return lianbiao3;/* 返回兩個多項式相加的結果lianbiao3 */Pn *mx1(Pn *pointer1,Pn *lianbiao2) /*多項式相乘*/Pn *lianbiao3,*pointer3,*pointer2=lianbiao2->next;/*定義鏈表lianbiao3 */pointer3=lianbiao3=malloc(sizeof(Pn);/*為lianbiao3申請空間, 并
13、將pointer3指向lianbiao3*/lianbiao3->next=NULL;while(pointer2)/* 當pointer2不為空時, 執(zhí)行while循環(huán)*/pointer3->next=malloc(sizeof(Pn);/*為新創(chuàng)結點申請空間*/pointer3=pointer3->next;/*將pointer3指向新結點*/pointer3->c=pointer1->c*pointer2->c;/*將pointer1的系數乘以pointer2->c*/pointer3->e=pointer1->e+pointer2-
14、>e;/*將pointer1的指數乘以pointer2->e*/pointer2=pointer2->next;/*pointer2下移*/pointer3->next=NULL;return lianbiao3;/*將結果lianbiao3返回*/Pn *mxm(Pn *lianbiao1,Pn *lianbiao2)/*多項式相乘*/Pn *lianbiao3,*pointer1=lianbiao1->next,*htemp;lianbiao3=malloc(sizeof(Pn);lianbiao3->next=NULL;while(pointer1)/
15、*當pointer1不為空,執(zhí)行while循環(huán)*/htemp=mx1(pointer1,lianbiao2);/*將相乘結果放到鏈表htemp*/lianbiao3=add(lianbiao3,htemp);/*將htemp中的多項式加上lianbiao3中的多項式*/pointer1=pointer1->next;Free(htemp);/*釋放鏈表htemp*/return lianbiao3;/*返回結果lianbiao3 */main()Pn *lianbiao1,*lianbiao2,*lianbiao3; /*定義三個鏈表lianbiao1,lianbiao2,lianbia
16、o3*/clrscr();printf("Create lianbiao1n");lianbiao1=create(); /*創(chuàng)建鏈表lianbiao1*/printf("nPrintf lianbiao1n");OUT(lianbiao1);/*打印出鏈表lianbiao1*/printf("nCreate lianbiao2n");lianbiao2=create();/*創(chuàng)建鏈表lianbiao2*/printf("nPrintf lianbiao2n");OUT(lianbiao2); /*打印出鏈表lia
17、nbiao2*/printf("nlianbiao1+lianbiao2:");lianbiao3=add(lianbiao1,lianbiao2);/*把lianbiao1和lianbiao2相加的結果賦給lianbiao3*/OUT(lianbiao3);/*打印出lianbiao3*/Free(lianbiao3);/*釋放lianbiao3 */printf("nlianbiao1*lianbiao2:");lianbiao3=mxm(lianbiao1,lianbiao2);/*把lianbiao1和lianbiao2相乘的結果賦給lianbi
18、ao3*/OUT(lianbiao3);/*輸出lianbiao3*/Free(lianbiao1);/*釋放lianbiao1*/Free(lianbiao2);Free(lianbiao3);getch();五、 調試過程#include "malloc.h"語句出錯, 多了一個m,后來改為#include "alloc.h", 就編譯通過了。六、 實驗結果測試數據(1):取兩項多項式為: 9+3x取一項多項式為: 2X-3實驗結果(1):這兩個項式相加結果為:lianbiao1+lianbiao2: 2X-3+9+3X這兩個項式相乘結果為:lianbiao1*lianbiao2: 18X-3+6X-2 實驗截圖(1):測試數據(2):取三項多項式為:(3,1) (7,6) (-9,9)取五項多項式為:(2,-3) (7,0) (-3,1) (8,5) (1,5)實驗結果(2):這兩個項式相加:lianbiao1+lianbiao2:(2,-3)(7,0) (8,5) (1,5) (7,6)(-9,9)這兩個項式相乘:lianbiao1*lianbiao2:(6,-2) (21,1) (-9,2) (14,3) (55,6) (3,6) (-21,7) (-63,9) (27,10) (56,11) (7,11) (-72,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交互信任評估-洞察及研究
- 滴灌系統(tǒng)施工技術優(yōu)化與推廣
- 公司投資并購管理辦法
- 微凸點在溫度循環(huán)荷載作用下的力學行為研究
- 生活技能課程中的實踐性教學設計研究
- 星級酒店大堂管理辦法
- 醫(yī)院財務退費管理辦法
- 港區(qū)人員安全行為分析-洞察及研究
- 旅游經濟學科課程體系構建與教學標準研究
- AI生成內容侵權認定的法律適用問題研究
- 法拍房后申請住房補貼申請書
- 蘇教版譯林初中英語詞匯表(七年級至九年級)
- 《外科學》課程基本要求與教學大綱本科生
- 工作銷項計劃表
- 抑郁病診斷證明書
- 典型振動頻譜圖范例
- 石化質檢員試題
- GB/T 6417.1-2005金屬熔化焊接頭缺欠分類及說明
- GB/T 32350.2-2015軌道交通絕緣配合第2部分:過電壓及相關防護
- GB/T 19520.16-2015電子設備機械結構482.6 mm(19 in)系列機械結構尺寸第3-100部分:面板、插箱、機箱、機架和機柜的基本尺寸
- (約克)機組熱回收技術
評論
0/150
提交評論