數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式計(jì)算_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式計(jì)算_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式計(jì)算_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式計(jì)算_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式計(jì)算_第5頁(yè)
已閱讀5頁(yè),還剩22頁(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ù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告題目:一元多項(xiàng)式計(jì)算班 級(jí): 計(jì)算機(jī)092 姓 名: 余海剛 指導(dǎo)教師:董躍華 ,井福榮 成 績(jī):_ 2011年 6月 22日摘要(題目)::文件是程序設(shè)計(jì)中的一個(gè)重要概念。所謂“文件”一般是指存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合。一批數(shù)據(jù)時(shí)以文件的形式存放在外部介質(zhì)(如磁盤)上的。操作系統(tǒng)是以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理的,也就是說(shuō),如果想找存在外部介質(zhì)上的數(shù)據(jù),必須先按文件名找到所指定的文件,然后從該文件中讀取數(shù)據(jù)。要向外部介質(zhì)上存儲(chǔ)數(shù)據(jù)也必須先建立一個(gè)文件(以文件名標(biāo)識(shí)),才能向它輸出數(shù)據(jù)。題目要求能夠按照指數(shù)降序排列建立并輸出多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加、相減,并將結(jié)果輸入;

2、單鏈表是用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。 以元素(數(shù)據(jù)元素的映象) + 指針(指示后繼元素存儲(chǔ)位置) = 結(jié)點(diǎn) (表示數(shù)據(jù)元素 或 數(shù)據(jù)元素的映象) 以“結(jié)點(diǎn)的序列”表示線性表。 關(guān)鍵字:?jiǎn)捂湵?,?shù)據(jù)結(jié)構(gòu),流程圖,整理表達(dá)式,if語(yǔ)句。目錄:1.引言 .22.需求分析.33.概要設(shè)計(jì).34.詳細(xì)設(shè)計(jì).65.測(cè)試結(jié)果.116.調(diào)試分析.147.設(shè)計(jì)體會(huì).148.結(jié)束語(yǔ).14參考文獻(xiàn)14附錄151.引言單鏈表:用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。 以元素(數(shù)據(jù)元素的映象) + 指針(指示后繼元素存儲(chǔ)位置) = 結(jié)點(diǎn) (表示數(shù)據(jù)元素 或 數(shù)據(jù)元素的映象)。 單鏈表是一種順

3、序存取的結(jié)構(gòu),為找第 i 個(gè)數(shù)據(jù)元素,必須先找到第 i-1 個(gè)數(shù)據(jù)元素。 因此,查找第 i 個(gè)數(shù)據(jù)元素的基本操作為:移動(dòng)指針,比較 j 和 i 。文件是程序設(shè)計(jì)中的一個(gè)重要概念。所謂“文件”一般是指存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合。一批數(shù)據(jù)時(shí)以文件的形式存放在外部介質(zhì)(如磁盤)上的。操作系統(tǒng)是以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理的,也就是說(shuō),如果想找存在外部介質(zhì)上的數(shù)據(jù),必須先按文件名找到所指定的文件,然后從該文件中讀取數(shù)據(jù)。要向外部介質(zhì)上存儲(chǔ)數(shù)據(jù)也必須先建立一個(gè)文件(以文件名標(biāo)識(shí)),才能向它輸出數(shù)據(jù)。本報(bào)告中所設(shè)計(jì)的整理表達(dá)式,實(shí)現(xiàn)了以線性表結(jié)構(gòu)的單向表表示商場(chǎng)所需求的功能,將文件形式保存的數(shù)據(jù)恢復(fù)成線性表

4、結(jié)構(gòu)的單向表的流程中所需的功能。2.需求分析要求只輸入數(shù)字,輸入零代表輸入結(jié)束。要求能夠按照指數(shù)降序排列建立并輸出多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加、相減,并將結(jié)果輸入;3.概要設(shè)計(jì)、. 為包含的庫(kù)函數(shù) 除此之外還有結(jié)構(gòu)體和宏定義的應(yīng)用系統(tǒng)流程圖: 圖3.1調(diào)用函數(shù)圖;主函數(shù)main()主界面menu()函數(shù)kuanjia1()函數(shù)delayMS函數(shù)Zlbds函數(shù)gotoTextPos函數(shù)polycha函數(shù)polyadd 圖3.24、詳細(xì)設(shè)計(jì)4.1引用庫(kù)函數(shù)及變量的定義 #include /*標(biāo)準(zhǔn)輸入/輸出頭文件*/#include /*包含繪制圖形函數(shù)等頭文件*/#include /*包含字符

5、串處理函數(shù)頭文件*/#include /*包含動(dòng)態(tài)存儲(chǔ)與釋放函數(shù)頭文件*/#include #include #define Max 100 /*宏觀定義棧的最大容量*/typedef struct polynodeint coef; /多項(xiàng)式的系數(shù)int exp; /指數(shù)struct polynode *next;node; 4.2 輸入算法的實(shí)現(xiàn)void kuanjia1() /大框架 system(cls); printf(); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); pri

6、ntf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf(); gotoTextPos(4,1); printf( 一元多項(xiàng)式計(jì)算);void menu() /主界面 kuanjia1(); gotoTextPos(16,8); printf(1.Start); gotoTextPos(16,10); printf(2.Exit); gotoTextPos(2,14); printf(Please input your choice: ); int n; scanf(%

7、d,&n); switch(n) case 1:zlbds();break; case 2:return ; default:gotoTextPos(28,14);printf(Error!); gotoTextPos(2,16);printf( Press any key to try again!); getch(); menu(); 4.3輸出算法的實(shí)現(xiàn)void zlbds() kuanjia1();node *ha,*hb,*hc,*hd;gotoTextPos(5,2);printf(請(qǐng)輸入多項(xiàng)式ha的系數(shù)與指數(shù):n);ha=create();gotoTextPos(2,9);pri

8、nt(ha);gotoTextPos(2,10);printf(n);gotoTextPos(2,10);printf(請(qǐng)輸入多項(xiàng)式hb的系數(shù)與指數(shù):n);hb=create();gotoTextPos(2,17);print(hb);gotoTextPos(2,18);printf(n);gotoTextPos(2,18);printf(多項(xiàng)式的和是:n);polyadd(ha,hb);gotoTextPos(2,19);print(ha);gotoTextPos(2,19);printf(n);gotoTextPos(2,20);printf(請(qǐng)輸入多項(xiàng)式hc的系數(shù)與指數(shù):n);hc=cr

9、eate();gotoTextPos(2,27);print(hc);gotoTextPos(2,27);printf(n);gotoTextPos(2,28);printf(請(qǐng)輸入多項(xiàng)式hd的系數(shù)與指數(shù):n);hd=create();gotoTextPos(2,35);print(hd);gotoTextPos(2,35);printf(n);gotoTextPos(2,36);printf(多項(xiàng)式的差是:n);polycha(hc,hd);gotoTextPos(2,37);print(hc);gotoTextPos(2,38);printf(n);getch(); menu();4.4

10、算法void polyadd(node *ha, node *hb)/一元多項(xiàng)式相加函數(shù),用于將兩個(gè)多項(xiàng)式相加,然后將和多項(xiàng)式存放在多項(xiàng)式ha中,并將多項(xiàng)式hb刪除node *p,*q,*pre,*temp;int sum;p=ha-next;q=hb-next;pre=ha;while(p!=NULL&q!=NULL)if(p-expexp)pre-next=p;pre=pre-next;p=p-next;else if(p-exp=q-exp)sum=p-coef+q-coef;if(sum!=0)p-coef=sum;pre-next=p;pre=pre-next;p=p-next;te

11、mp=q;q=q-next;free(temp);else /如果系數(shù)和為零,則刪除結(jié)點(diǎn)p與q,并將指針指向下一個(gè)結(jié)點(diǎn)temp=p-next;free(p);p=temp;temp=q-next;free(q);q=temp;elsepre-next=q;pre=pre-next;q=q-next;if(p!=NULL) /將多項(xiàng)式A中剩余的結(jié)點(diǎn)加入到和多項(xiàng)式中pre-next=p;elsepre-next=q;4.5主函數(shù)int main() system(mode con:cols=40 lines=41); setConsoleTitle(一元多項(xiàng)式計(jì)算 by余海剛); system(c

12、olor 0A); menu(); kuanjia1(); gotoTextPos(10,7); printf(拜); delayMS(600); gotoTextPos(19,7); printf(拜); delayMS(600); gotoTextPos(20,9); printf(b); delayMS(600); gotoTextPos(21,9); printf(y); delayMS(600); gotoTextPos(24,9); printf(余); delayMS(600); gotoTextPos(26,9); printf(海); delayMS(600); gotoTe

13、xtPos(28,9); printf(剛); delayMS(600);return 0;5、 測(cè)試結(jié)果 5.1輸入界面圖 圖5.1 5.2.1輸出界面圖 輸入選擇1的運(yùn)行界面。見(jiàn)1.10 圖 5.2.1 5.2.2輸入選擇2的運(yùn)行界面。見(jiàn) 圖5.2.2 5.2.3輸入其它選擇的運(yùn)行界面。見(jiàn) 圖5.2.3 6、 調(diào)試分析編譯時(shí),發(fā)現(xiàn)有的括號(hào)可刪可不刪時(shí),會(huì)自動(dòng)刪除,這樣導(dǎo)致程序不夠緊密。剛剛接到這個(gè)題目的時(shí)候,本人發(fā)現(xiàn)用單鏈表做會(huì)更加的減少時(shí)間復(fù)雜度和空間復(fù)雜度,從而更好的方便使用,于是本人的一切出發(fā)點(diǎn)都是圍繞方便使用者進(jìn)行。程序的開(kāi)始我使用的是宏定義,使程序更加的簡(jiǎn)潔明了。登陸界面其實(shí)是利

14、用判斷語(yǔ)句做的,后面的輸入輸出沒(méi)有什么特別的,是按照一般線性表的輸入輸出做的,。除此之外,本人還花了一部分時(shí)間到美化界面上,現(xiàn)在的界面是在本人的能力范圍之內(nèi)最好的。7、 設(shè)計(jì)體會(huì)通過(guò)這個(gè)星期的課程設(shè)計(jì),本人的收獲還是不少的。剛開(kāi)始看到這個(gè)課程設(shè)計(jì)題目的時(shí)候,本人覺(jué)得很有信心,因?yàn)楸救苏J(rèn)為本人的數(shù)據(jù)結(jié)構(gòu)和C語(yǔ)言中本人最喜歡也是學(xué)的最好的地方就是線性,但是隨著對(duì)這個(gè)題目的細(xì)細(xì)探索,本人發(fā)現(xiàn)這題目還是有一定的難度的,越看本人覺(jué)得越急躁,但是這樣反而更加的阻礙我的思路,直到本人碰到一個(gè)在C語(yǔ)言方面頗有心得的同學(xué),他幫我解決了很多問(wèn)題,更主要的是他讓本人明白了耐性在一個(gè)程序中的重要作用,現(xiàn)在,借著這里本

15、人想真誠(chéng)的對(duì)他說(shuō)一聲“謝謝!”本人一定會(huì)更加的努力培養(yǎng)本人的耐性,讓本人的人生更加的美好而成功!數(shù)據(jù)結(jié)構(gòu)的很多算法沒(méi)能熟練的掌握,以致在調(diào)試的時(shí)候花了很長(zhǎng)時(shí)間,而且程序不夠工程化,功能不夠完善。8、 結(jié)束語(yǔ)該系統(tǒng)本人主要做了三個(gè)功能選項(xiàng),,一個(gè)主界面。解決了一元多項(xiàng)式計(jì)算問(wèn)題,當(dāng)然此系統(tǒng)也可應(yīng)用到其它表達(dá)式系統(tǒng)。它是利用了C語(yǔ)言實(shí)現(xiàn)的。此系統(tǒng)的作界面,操作員可以對(duì)某個(gè)指定的庫(kù)存文件進(jìn)行選擇,文件名自定。非常感謝老師對(duì)本人的教導(dǎo)。參考文獻(xiàn)1 嚴(yán)蔚敏 吳偉名 編著,數(shù)據(jù)結(jié)構(gòu), 清華大學(xué)出版社, 2001年1月2 譚浩強(qiáng) 編著, C程序設(shè)計(jì)(第三版) ,新世紀(jì)計(jì)算機(jī)基礎(chǔ)教育叢書(shū) 清華大學(xué)出版社 ,2

16、005年7月第三版3 張穎江,胡燕。c語(yǔ)言程序設(shè)計(jì)M。北京:科學(xué)出版社。1985年。4 裔紅艷 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 , 計(jì)算機(jī)師范5 李春葆 編著,數(shù)據(jù)結(jié)構(gòu)習(xí)題與解析(第三版),清華大學(xué)出版社,2006年10月20附錄:#include#include#include#include#include#include strong.cpp#define Max 100void menu();typedef struct polynodeint coef; /多項(xiàng)式的系數(shù)int exp; /指數(shù)struct polynode *next;node;void kuanjia1() /大框架 sys

17、tem(cls); printf(); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf( ); printf(); gotoTextPos(4,1); printf( 一元多項(xiàng)式計(jì)算);node *create() /用尾插法建立一元多項(xiàng)式的鏈表node *h

18、,*r,*s;int c,e;h=(node*)malloc(sizeof(node);r=h;printf(coef:);scanf(%d,&c);printf(exp: );scanf(%d,&e);while(c!=0) /輸入系數(shù)為0時(shí),多項(xiàng)式的輸入結(jié)束s=(node*)malloc(sizeof(node);s-coef=c;s-exp=e;r-next=s;r=s;printf(coef:);scanf(%d,&c);printf(exp: );scanf(%d,&e);r-next=NULL;return(h);void print(node *p) /輸出函數(shù),打印出一元多項(xiàng)式

19、while(p-next!=NULL)p=p-next;printf( %d*x%d,p-coef,p-exp);void polyadd(node *ha, node *hb)/一元多項(xiàng)式相加函數(shù),用于將兩個(gè)多項(xiàng)式相加,然后將和多項(xiàng)式存放在多項(xiàng)式ha中,并將多項(xiàng)式hb刪除node *p,*q,*pre,*temp;int sum;p=ha-next;q=hb-next;pre=ha;while(p!=NULL&q!=NULL)if(p-expexp)pre-next=p;pre=pre-next;p=p-next;else if(p-exp=q-exp)sum=p-coef+q-coef;i

20、f(sum!=0)p-coef=sum;pre-next=p;pre=pre-next;p=p-next;temp=q;q=q-next;free(temp);else /如果系數(shù)和為零,則刪除結(jié)點(diǎn)p與q,并將指針指向下一個(gè)結(jié)點(diǎn)temp=p-next;free(p);p=temp;temp=q-next;free(q);q=temp;elsepre-next=q;pre=pre-next;q=q-next;if(p!=NULL) /將多項(xiàng)式A中剩余的結(jié)點(diǎn)加入到和多項(xiàng)式中pre-next=p;elsepre-next=q;void polycha(node *hc, node *hd)/一元多項(xiàng)

21、式相加函數(shù),用于將兩個(gè)多項(xiàng)式相加,然后將和多項(xiàng)式存放在多項(xiàng)式ha中,并將多項(xiàng)式hb刪除node *p,*q,*pre,*temp;int cha;p=hc-next;q=hd-next;pre=hc;while(p!=NULL&q!=NULL)if(p-expexp)pre-next=p;pre=pre-next;p=p-next;else if(p-exp=q-exp)cha=p-coef-q-coef;if(cha!=0)p-coef=cha;pre-next=p;pre=pre-next;p=p-next;temp=q;q=q-next;free(temp);else /如果系數(shù)和為零,

22、則刪除結(jié)點(diǎn)p與q,并將指針指向下一個(gè)結(jié)點(diǎn)temp=p-next;free(p);p=temp;temp=q-next;free(q);q=temp;elsepre-next=q;pre=pre-next;q=q-next;if(p!=NULL) /將多項(xiàng)式A中剩余的結(jié)點(diǎn)加入到和多項(xiàng)式中pre-next=p;elsepre-next=q;void zlbds() kuanjia1();node *ha,*hb,*hc,*hd;gotoTextPos(5,2);printf(請(qǐng)輸入多項(xiàng)式ha的系數(shù)與指數(shù):n);ha=create();gotoTextPos(2,9);print(ha);gotoT

23、extPos(2,10);printf(n);gotoTextPos(2,10);printf(請(qǐng)輸入多項(xiàng)式hb的系數(shù)與指數(shù):n);hb=create();gotoTextPos(2,17);print(hb);gotoTextPos(2,18);printf(n);gotoTextPos(2,18);printf(多項(xiàng)式的和是:n);polyadd(ha,hb);gotoTextPos(2,19);print(ha);gotoTextPos(2,19);printf(n);gotoTextPos(2,20);printf(請(qǐng)輸入多項(xiàng)式hc的系數(shù)與指數(shù):n);hc=create();gotoT

24、extPos(2,27);print(hc);gotoTextPos(2,27);printf(n);gotoTextPos(2,28);printf(請(qǐng)輸入多項(xiàng)式hd的系數(shù)與指數(shù):n);hd=create();gotoTextPos(2,35);print(hd);gotoTextPos(2,35);printf(n);gotoTextPos(2,36);printf(多項(xiàng)式的差是:n);polycha(hc,hd);gotoTextPos(2,37);print(hc);gotoTextPos(2,38);printf(n);getch(); menu();void menu() /主界面

25、 kuanjia1(); gotoTextPos(16,8); printf(1.Start); gotoTextPos(16,10); printf(2.Exit); gotoTextPos(2,14); printf(Please input your choice: ); int n; scanf(%d,&n); switch(n) case 1:zlbds();break; case 2:return ; default:gotoTextPos(28,14);printf(Error!); gotoTextPos(2,16);printf( Press any key to try a

26、gain!); getch(); menu(); int main() system(mode con:cols=40 lines=41); setConsoleTitle(一元多項(xiàng)式計(jì)算 by余海剛); system(color 0A); menu(); kuanjia1(); gotoTextPos(10,7); printf(拜); delayMS(600); gotoTextPos(19,7); printf(拜); delayMS(600); gotoTextPos(20,9); printf(b); delayMS(600); gotoTextPos(21,9); printf(y

27、); delayMS(600); gotoTextPos(24,9); printf(余); delayMS(600); gotoTextPos(26,9); printf(海); delayMS(600); gotoTextPos(28,9); printf(剛); delayMS(600); return 0; #include pcc32.hvoid delayMS(uint32 d)Sleep(d);return ;void clearText(void)system(cls);return ;int setTextColor(uint8 fColor)HANDLE hd = GetS

28、tdHandle(STD_OUTPUT_HANDLE);CONSOLE_SCREEN_BUFFER_INFO csbInfo;GetConsoleScreenBufferInfo(hd, &csbInfo);return SetConsoleTextAttribute(hd, fColor | (csbInfo.wAttributes&0x0F);PCCOLOR getTextColor(void)CONSOLE_SCREEN_BUFFER_INFO csbInfo;GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csb

29、Info);return (PCCOLOR)(csbInfo.wAttributes&0x0F);int setBackColor(uint8 bColor)HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_SCREEN_BUFFER_INFO csbInfo;GetConsoleScreenBufferInfo(hd, &csbInfo);return SetConsoleTextAttribute(hd, (bColor 4);int setColors(uint8 fColor, uint8 bColor)HANDLE hd = Ge

30、tStdHandle(STD_OUTPUT_HANDLE);CONSOLE_SCREEN_BUFFER_INFO csbInfo;GetConsoleScreenBufferInfo(hd, &csbInfo);return SetConsoleTextAttribute(hd, fColor | (bColor 4) | (csbInfo.wAttributes&0xFF);int setSwapColors(bool b)HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_SCREEN_BUFFER_INFO csbInfo;GetCon

31、soleScreenBufferInfo(hd, &csbInfo);if (!b)return SetConsoleTextAttribute(hd, csbInfo.wAttributes | 0x4000);elsereturn SetConsoleTextAttribute(hd, csbInfo.wAttributes & 0x4000);int setUnderLine(bool b)HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_SCREEN_BUFFER_INFO csbInfo;GetConsoleScreenBufferInfo(hd, &csbInfo);if (!b)return SetConsoleTextAttribute(hd, csbInfo.wAttributes | 0x8000);elsereturn SetConsoleTextAttribute(hd, csbInfo.wAttributes & 0x8000);uint8 getLineWidth(void)CONSOLE_SCREEN_BUFFER_INFO csbInfo;GetConsoleS

溫馨提示

  • 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)論