版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì)</p><p><b> ?。〝?shù)據(jù)結(jié)構(gòu))</b></p><p><b> 二○一二年一月十日</b></p><p> 課程設(shè)計(jì)任務(wù)書(shū)及成績(jī)?cè)u(píng)定</p><p> Ⅰ、題目的目的和要求:</p><p> (1) 課程設(shè)計(jì)
2、目的</p><p> 鞏固和加深對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,通過(guò)上機(jī)實(shí)驗(yàn)、調(diào)試程序,加深對(duì)課本知識(shí)的理解,最終使學(xué)生能夠熟練應(yīng)用數(shù)據(jù)結(jié)構(gòu)的知識(shí)寫(xiě)程序。通過(guò)本課程的學(xué)習(xí),能熟練掌握幾種基本數(shù)據(jù)結(jié)構(gòu)的基本操作,能夠應(yīng)用線性數(shù)據(jù)結(jié)構(gòu)解決實(shí)際問(wèn)題。</p><p><b> (2)基本要求 :</b></p><p> 設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)完成長(zhǎng)整數(shù)的表示和存儲(chǔ)
3、,并編寫(xiě)算法來(lái)實(shí)現(xiàn)兩長(zhǎng)整數(shù)的加、減、</p><p> 乘除等基本代數(shù)運(yùn)算。</p><p> ?、匍L(zhǎng)整數(shù)長(zhǎng)度在二十位以上。</p><p> ?、趯?shí)現(xiàn)兩長(zhǎng)整數(shù)的加、減、乘、除操作。</p><p> 選作: ③輸入輸出均在文件中。</p><p> ?、芊治鏊惴ǖ臅r(shí)空復(fù)雜性。</p>&l
4、t;p> ?、?、設(shè)計(jì)進(jìn)度及完成情況</p><p> ?、蟆⒅饕獏⒖嘉墨I(xiàn)及資料</p><p> [1] 嚴(yán)蔚敏 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)清華大學(xué)出版社 1999</p><p> [2] 嚴(yán)蔚敏 數(shù)據(jù)結(jié)構(gòu)題集(C語(yǔ)言版)清華大學(xué)出版社 1999</p><p> [3] 譚浩強(qiáng) C語(yǔ)言程序設(shè)計(jì) 清華大學(xué)出版社</p>
5、<p> [4] 與所用編程環(huán)境相配套的C語(yǔ)言或C++相關(guān)的資料</p><p><b> ?、?、成績(jī)?cè)u(píng)定:</b></p><p> 設(shè)計(jì)成績(jī): (教師填寫(xiě))</p><p> 指導(dǎo)老師: (簽字)</p><p> 二○一二年
6、 一 月 十 日</p><p><b> 目 錄</b></p><p> 第一章 概述……………………………………………………………1</p><p> 第二章 系統(tǒng)分析………………………………………………………2</p><p> 第三章 概要設(shè)計(jì)………………………………………………………3<
7、/p><p> 第四章 詳細(xì)設(shè)計(jì)………………………………………………………4</p><p> 第五章 運(yùn)行與測(cè)試……………………………………………………14</p><p> 第六章 總結(jié)與心得……………………………………………………16</p><p> 參考文獻(xiàn) ………………………………………………………………15</p>
8、;<p><b> 第一章 概述</b></p><p> 課程設(shè)計(jì)是實(shí)踐性教學(xué)中的一個(gè)重要環(huán)節(jié),它以某一課程為基礎(chǔ),可以涉及和課程相關(guān)的各個(gè)方面,是一門(mén)獨(dú)立于課程之外的特殊課程。課程設(shè)計(jì)是讓同學(xué)們對(duì)所學(xué)的課程更全面的學(xué)習(xí)和應(yīng)用,理解和掌握課程的相關(guān)知識(shí)。《數(shù)據(jù)結(jié)構(gòu)》是一門(mén)重要的專業(yè)基礎(chǔ)課,是計(jì)算機(jī)理論和應(yīng)用的核心基礎(chǔ)課程。</p><p> 數(shù)據(jù)
9、結(jié)構(gòu)課程設(shè)計(jì),要求學(xué)生在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇和應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面,加深對(duì)課程基本內(nèi)容的理解。同時(shí),在程序設(shè)計(jì)方法以及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練。</p><p> 在這次程序設(shè)計(jì)中我選擇了長(zhǎng)整數(shù)的代數(shù)計(jì)算這個(gè)題目,在一般的程序運(yùn)算中,長(zhǎng)整數(shù)是無(wú)法計(jì)算的,因?yàn)橛?jì)算機(jī)一次能夠運(yùn)算的位數(shù)是有限,一旦整數(shù)很長(zhǎng),就需要一個(gè)程序來(lái)進(jìn)行多次計(jì)算,通過(guò)這個(gè)程序,
10、可一把一個(gè)長(zhǎng)整數(shù)分成多個(gè)普通整數(shù)來(lái)進(jìn)行計(jì)算,使得長(zhǎng)整數(shù)也可以進(jìn)行運(yùn)算。我編寫(xiě)的這個(gè)程序就可以進(jìn)行加減乘除的運(yùn)算,各個(gè)數(shù)據(jù)也可以是負(fù)數(shù)。</p><p><b> 第二章 系統(tǒng)分析</b></p><p> 設(shè)計(jì)一個(gè)實(shí)現(xiàn)長(zhǎng)整數(shù)進(jìn)行四則運(yùn)算的程序,長(zhǎng)整數(shù)長(zhǎng)度在二十位以上,有正負(fù)數(shù)的區(qū)別。</p><p> 輸入每四位一組,組間用逗號(hào)隔開(kāi),長(zhǎng)整
11、數(shù)位數(shù)沒(méi)有上限,以分號(hào)結(jié)束長(zhǎng)整型數(shù)據(jù)的輸入。用lnode結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)。每一個(gè)數(shù)據(jù)有一個(gè)頭結(jié)點(diǎn),它的data域用來(lái)放數(shù)據(jù)的正負(fù)數(shù)。其余結(jié)點(diǎn)的數(shù)都為正整數(shù)。</p><p> 程序包含數(shù)據(jù)的輸入,判斷,運(yùn)算,輸出和主函數(shù)。</p><p> 具體程序執(zhí)行的命令包括:</p><p> 輸入函數(shù):inputa();inputb();//的輸入并建立雙向循環(huán)鏈
12、表</p><p> 判斷函數(shù):compare();//比較數(shù)據(jù)的大小</p><p> 運(yùn)算函數(shù):unsigndeadd();//無(wú)符號(hào)的加法</p><p> unsigndesub();//無(wú)符號(hào)的減法</p><p> add();sub();mul();div();//加減乘除四則運(yùn)算</p><p>
13、; 輸出函數(shù):divput();//除法結(jié)果的輸出函數(shù)</p><p> putoutc();//其余結(jié)果的輸出函數(shù)</p><p> 主函數(shù):main();</p><p><b> 第三章 概要設(shè)計(jì)</b></p><p> 首先要考慮的是如何表示長(zhǎng)整型數(shù)。可以4位數(shù)形成1組,而一個(gè)長(zhǎng)整型數(shù)可能會(huì)有很多組這
14、種4位數(shù),而每節(jié)之間是有先后順序的,因此我們可以考慮用數(shù)組和鏈表來(lái)存儲(chǔ)數(shù)據(jù)。(1)再考慮到每個(gè)長(zhǎng)整型數(shù)的長(zhǎng)度在輸入之間是無(wú)法預(yù)知的,因此使用鏈表在存儲(chǔ)空間的分配上更方便一些。(2)在輸入數(shù)據(jù)時(shí)總是從高位到低位地存儲(chǔ),而計(jì)算時(shí)總是從低位向高位運(yùn)算,因此采用雙向鏈表更方便,而為了從頭結(jié)點(diǎn)方便地轉(zhuǎn)到尾結(jié)點(diǎn)可以采用循環(huán)鏈表。綜上考慮,應(yīng)以雙向循環(huán)鏈表表示長(zhǎng)整數(shù),每個(gè)結(jié)點(diǎn)含一個(gè)整型變量,且僅絕對(duì)值不超過(guò)9999的整數(shù),整個(gè)鏈表用十進(jìn)制數(shù)表示。(3
15、)對(duì)于每一個(gè)長(zhǎng)整型數(shù)可以設(shè)置一個(gè)頭結(jié)點(diǎn),其中的數(shù)據(jù)域用來(lái)表示該長(zhǎng)整型數(shù)的正負(fù)號(hào)及組數(shù),該值的符號(hào)則表示該長(zhǎng)整型數(shù)的符號(hào),該數(shù)的絕對(duì)值表示該長(zhǎng)整型數(shù)包含的4位數(shù)的組數(shù)。第一個(gè)存儲(chǔ)4位數(shù)據(jù)組的結(jié)點(diǎn)稱為首結(jié)點(diǎn),而最后一個(gè)4位數(shù)據(jù)組結(jié)點(diǎn)稱為尾結(jié)點(diǎn)。</p><p> 為此需要結(jié)構(gòu)數(shù)據(jù)類型:雙向循環(huán)鏈表:</p><p> typedef struct lnode{//結(jié)點(diǎn)結(jié)構(gòu)體</p&g
16、t;<p><b> int data;</b></p><p> struct lnode *next;</p><p> struct lnode *prior;</p><p> }lnode,*lnodelist</p><p><b> 主要的模塊可分為</b>&l
17、t;/p><p> 輸入函數(shù):inputa();inputb();//的輸入并建立雙向循環(huán)鏈表</p><p> 判斷函數(shù):compare();//比較兩個(gè)數(shù)據(jù)的大小,進(jìn)行相應(yīng)的的計(jì)算。</p><p> 運(yùn)算函數(shù):add();sub();mul();div();//運(yùn)算</p><p> 輸出函數(shù):divput();putoutc();
18、//除法的輸出及其他運(yùn)算的輸出。</p><p> 主函數(shù):main();</p><p><b> 第四章 詳細(xì)設(shè)計(jì)</b></p><p> #include<iostream></p><p> using namespace std;</p><p> #includ
19、e<stdio.h></p><p> #define OK 1;</p><p> #define FALSE 0;</p><p> typedef struct lnode{//結(jié)點(diǎn)結(jié)構(gòu)體</p><p><b> int data;</b></p><p> stru
20、ct lnode *next;</p><p> struct lnode *prior;</p><p> }lnode,*lnodelist;</p><p> int compare(lnodelist &ahead,lnodelist &bhead,int &q)//比較a和b的大小</p><p>&l
21、t;b> {</b></p><p> lnode *pa,*pb;</p><p> int bcount=0,acount=0;</p><p> pa=ahead->next;pb=bhead->next;</p><p> while(pa!=ahead)</p><p>
22、; {acount++;pa=pa->next;}</p><p> while(pb!=bhead)</p><p> {bcount++;pb=pb->next;}</p><p> if(acount>bcount)q=1;</p><p> else if(acount<bcount)q=-1;<
23、;/p><p><b> else</b></p><p><b> {</b></p><p> pa=ahead->prior;</p><p> pb=bhead->prior;</p><p> while((pa->data==pb->
24、data)&&(pa->prior!=ahead))</p><p> {pa=pa->prior;pb=pb->prior;}</p><p> if(pa->data>pb->data)q=1;</p><p> else if(pa->data<pb->data)q=-1;</
25、p><p><b> else q=0;</b></p><p> }return 0;</p><p><b> }</b></p><p> int inputa(lnodelist &ahead)//輸入長(zhǎng)整數(shù)a</p><p><b> {&l
26、t;/b></p><p> lnode *p;char ch;</p><p> int afirst;</p><p> cout<<"請(qǐng)輸入第一個(gè)無(wú)符號(hào)長(zhǎng)整型數(shù),要求每四位用逗號(hào)隔開(kāi)末尾為分號(hào):"<<endl;</p><p> p=ahead=new lnode;//頭結(jié)點(diǎn)&
27、lt;/p><p> p->data=0;</p><p> p->next=p;</p><p> p->prior=p;</p><p> cin>>afirst>>ch;//輸入第一個(gè)結(jié)點(diǎn)數(shù)據(jù)</p><p> if(afirst<0)</p>
28、<p> {ahead->data=-1;afirst=-afirst;}</p><p> else ahead->data=1;</p><p> p=new lnode;</p><p> p->data=afirst;</p><p> p->next=ahead;</p>&
29、lt;p> ahead->prior=p;</p><p> ahead->next=p;</p><p> p->prior=ahead;</p><p> while(ch!=';')</p><p><b> {</b></p><p>
30、 cin>>afirst>>ch;</p><p> p=new lnode;</p><p> p->data=afirst;</p><p> p->next=ahead->next;</p><p> ahead->next->prior=p;</p><
31、p> ahead->next=p;</p><p> p->prior=ahead;</p><p><b> }</b></p><p> return OK;</p><p><b> }</b></p><p> int inputb(ln
32、odelist &bhead)//輸入長(zhǎng)整數(shù)b</p><p><b> {</b></p><p> lnode *p;char ch;</p><p> int bfirst;</p><p> cout<<"請(qǐng)輸入第二個(gè)無(wú)符號(hào)長(zhǎng)整型數(shù),要求每四位用逗號(hào)隔開(kāi)末尾為分號(hào):&quo
33、t;<<endl;</p><p> p=bhead=new lnode;//頭結(jié)點(diǎn)</p><p> p->data=0;</p><p> p->next=p;</p><p> cin>>bfirst>>ch;//輸入第一個(gè)結(jié)點(diǎn)數(shù)據(jù)</p><p> if
34、(bfirst<0)</p><p> {bhead->data=-1;bfirst=-bfirst;}</p><p> else bhead->data=1;</p><p> p=new lnode;</p><p> p->data=bfirst;</p><p> p->
35、;next=bhead;</p><p> bhead->prior=p;</p><p> bhead->next=p;</p><p> p->prior=bhead;</p><p> while(ch!=';')</p><p><b> {</b&g
36、t;</p><p> cin>>bfirst>>ch;</p><p> p=new lnode;</p><p> p->data=bfirst;</p><p> p->next=bhead->next;</p><p> bhead->next->
37、prior=p;</p><p> bhead->next=p;</p><p> p->prior=bhead;</p><p><b> }</b></p><p> return OK;</p><p><b> }</b></p>
38、<p> void putoutc(lnode *chead)//輸出結(jié)果</p><p><b> {</b></p><p> lnode *s,*pr;</p><p> pr=chead->next;</p><p> if(pr!=chead)</p><p>
39、 {cout<<pr->data;pr=pr->next;}</p><p> while(pr!=chead)</p><p> {if(pr->data==0)</p><p> cout<<"0000";</p><p> else if(pr->data&
40、gt;0&&pr->data<10)</p><p> cout<<"000";</p><p> else if(pr->data>=10&&pr->data<100)</p><p> cout<<"00";</p>
41、;<p> else if(pr->data>=100&&pr->data<1000)</p><p> cout<<"0";</p><p> cout<<pr->data;</p><p><b> s=pr;</b></p
42、><p> pr=pr->next;</p><p><b> delete s;</b></p><p> }cout<<endl;</p><p><b> }</b></p><p> int unsigndeadd(lnodelist &a
43、mp;ahead,lnodelist &bhead)//無(wú)符號(hào)長(zhǎng)整數(shù)的加法</p><p><b> {</b></p><p> int sum,carry=0; //進(jìn)位</p><p> lnode *pa,*pb;</p><p> lnode *p,*chead;</p><
44、p> pa=ahead->next;</p><p> pb=bhead->next;</p><p> p=chead=new lnode;//頭結(jié)點(diǎn)</p><p> p->data=0;</p><p> p->next=p;</p><p> p->prior=p
45、;</p><p> while(pa!=ahead&&pb!=bhead)</p><p> {sum=pa->data+pb->data+carry;</p><p> p=new lnode;</p><p> p->data=sum%10000;</p><p> c
46、arry = sum/10000;</p><p> p->next=chead->next;</p><p> chead->next->prior=p;</p><p> chead->next=p;</p><p> p->prior=chead;</p><p>
47、 pa=pa->next;</p><p> pb=pb->next;</p><p><b> }</b></p><p> if(pa!=ahead)//a還沒(méi)有處理完,把a(bǔ)剩下的數(shù)字加到和上</p><p> {while(pa!=ahead)</p><p><b
48、> {</b></p><p> sum=pa->data+carry;</p><p> p=new lnode;</p><p> p->data=sum%10000;</p><p> p->next=chead->next;</p><p> chead-&
49、gt;next->prior=p;</p><p> chead->next=p;</p><p> p->prior=chead;</p><p> carry = sum/10000;</p><p> pa=pa->next;</p><p><b> }</b
50、></p><p><b> }</b></p><p> if(pb!=bhead)//b還沒(méi)有處理完,把b剩下的數(shù)字加到和上</p><p> {while(pb!=bhead)</p><p><b> {</b></p><p> sum=pb->
51、;data+carry;</p><p> p=new lnode;</p><p> p->data=sum%10000;</p><p> p->next=chead->next;</p><p> chead->next->prior=p;</p><p> chead-&
52、gt;next=p;</p><p> p->prior=chead;</p><p> carry = sum/10000;</p><p> pb=pb->next;</p><p><b> }</b></p><p><b> }</b><
53、/p><p> if(carry)//如果最后一位有進(jìn)位,就申請(qǐng)一個(gè)結(jié)點(diǎn)存儲(chǔ)</p><p> {p=new lnode;</p><p> p->data=carry;</p><p> p->next=chead->next;</p><p> chead->next->prio
54、r=p;</p><p> chead->next=p;</p><p> p->prior=chead;</p><p><b> }</b></p><p> putoutc(chead);</p><p> return OK;</p><p>
55、;<b> }</b></p><p> int unsigndesub(lnodelist &ahead,lnodelist &bhead)//無(wú)符號(hào)長(zhǎng)整數(shù)的減法a比b大。</p><p><b> {</b></p><p> int diffe,borrow=0; //借位</p>
56、<p> lnode *pa,*pb,*chead;</p><p><b> lnode *p;</b></p><p> pa=ahead->next;</p><p> pb=bhead->next;</p><p> p=chead=new lnode;//頭結(jié)點(diǎn)</p
57、><p> p->data=0;</p><p> p->next=p;</p><p> p->prior=p;</p><p> while(pa!=ahead&&pb!=bhead)</p><p><b> {</b></p><
58、p> diffe=pa->data-borrow-pb->data;</p><p> if (diffe<0){borrow=1;diffe+=10000;}else borrow=0;</p><p> p=new lnode;//存儲(chǔ)差</p><p> p->data=diffe;</p><p>
59、; p->next=chead->next;</p><p> chead->next->prior=p;</p><p> chead->next=p;</p><p> p->prior=chead;</p><p> pa = pa->next;</p><p>
60、; pb = pb->next;</p><p><b> }</b></p><p> if(pa!=ahead)</p><p> {while(pa!=ahead)</p><p> {diffe=pa->data-borrow;</p><p> if (diffe
61、<0){borrow=1;diffe+=10000;}else borrow=0;</p><p> p=new lnode;//存儲(chǔ)差</p><p> p->data=diffe;</p><p> p->next=chead->next;</p><p> chead->next->prior
62、=p;</p><p> chead->next=p;</p><p> p->prior=chead;</p><p> pa=pa->next;</p><p><b> }</b></p><p><b> }</b></p>
63、<p> while (p->data==0&&p->next!=chead)</p><p><b> {</b></p><p><b> lnode *s;</b></p><p> s=p;p=p->next;</p><p> chea
64、d->next=p;</p><p> p->prior=chead;</p><p><b> delete s;</b></p><p><b> }</b></p><p> putoutc(chead);</p><p> return OK;&
65、lt;/p><p><b> }</b></p><p> int add(lnodelist &ahead,lnodelist &bhead)</p><p><b> {</b></p><p> int e,acount=0,bcount=0,q;</p>&
66、lt;p> e=ahead->data*bhead->data;</p><p> cout<<"輸出運(yùn)算結(jié)果為:"<<endl;</p><p><b> if(e==1)</b></p><p><b> {</b></p><p
67、> if(ahead->data==-1)</p><p><b> {</b></p><p> cout<<"-";unsigndeadd(ahead,bhead);</p><p><b> }</b></p><p> else unsi
68、gndeadd(ahead,bhead);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> compare(ahead,bhead,q);</p><p>
69、<b> if(q==1)</b></p><p><b> {</b></p><p> if(ahead->data==-1)</p><p><b> {</b></p><p> cout<<"-";unsignd
70、esub(ahead,bhead);</p><p><b> }</b></p><p> else unsigndesub(ahead,bhead);</p><p><b> }</b></p><p><b> else</b></p><p
71、><b> {</b></p><p> if(ahead->data==1)</p><p><b> {</b></p><p> cout<<"-";unsigndesub(bhead,ahead);</p><p><b> }
72、</b></p><p> else unsigndesub(bhead,ahead);</p><p><b> }</b></p><p> }return 0;</p><p><b> }</b></p><p> int sub(lnodeli
73、st &ahead,lnodelist &bhead)</p><p><b> {</b></p><p><b> int e,q;</b></p><p> e=ahead->data*bhead->data;</p><p> cout<<&q
74、uot;輸出運(yùn)算結(jié)果為:"<<endl;</p><p><b> if(e==-1)</b></p><p><b> {</b></p><p> if(ahead->data==-1)</p><p><b> {</b></p&
75、gt;<p> cout<<"-";unsigndeadd(ahead,bhead);</p><p> }else{unsigndeadd(ahead,bhead);}</p><p><b> }</b></p><p><b> else</b></p&g
76、t;<p><b> {</b></p><p> compare(ahead,bhead,q);</p><p><b> if(q==1)</b></p><p><b> {</b></p><p> if(ahead->data==-1)&
77、lt;/p><p><b> {</b></p><p> cout<<"-";unsigndesub(ahead,bhead);</p><p><b> }</b></p><p> else unsigndesub(ahead,bhead);<
78、/p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(ahead->data==1)</p><p><b> {</b></
79、p><p> cout<<"-";unsigndesub(bhead,ahead);</p><p><b> }</b></p><p> else unsigndesub(bhead,ahead);</p><p><b> }</b></p>
80、<p> }return 0;</p><p><b> }</b></p><p> int mul(lnodelist &ahead,lnodelist &bhead)</p><p><b> {</b></p><p> long multi,carry;
81、 //進(jìn)位</p><p><b> int e;</b></p><p> lnode *pa,*pb,*pc,*cnow;</p><p> lnode *p,*chead;</p><p> e=ahead->data*bhead->data;</p><p> cou
82、t<<"輸出運(yùn)算結(jié)果為:"<<endl;</p><p> if(e==-1){cout<<"-";}</p><p> pa=ahead->next;</p><p> pb=bhead->next;</p><p> p=chead=new
83、lnode;//頭結(jié)點(diǎn)</p><p> p->data=0;</p><p> p->next=p;</p><p> p->prior=p;</p><p> pc=cnow=chead;</p><p> while(pb!=bhead)</p><p><
84、;b> {</b></p><p><b> carry=0;</b></p><p> while(pa!=ahead)</p><p><b> {</b></p><p> multi=pa->data*pb->data+carry;</p>
85、;<p> carry = multi/10000;</p><p> if(pc->prior==chead)</p><p><b> {</b></p><p> p=new lnode;</p><p> p->data=multi%10000;</p>
86、<p> p->next=chead->next;</p><p> chead->next->prior=p;</p><p> chead->next=p;</p><p> p->prior=chead;</p><p><b> }</b></p&g
87、t;<p><b> else</b></p><p><b> {</b></p><p> multi=pc->prior->data+multi%10000;</p><p> pc->prior->data=multi%10000;</p><p&g
88、t; carry=carry+multi/10000;</p><p><b> }</b></p><p> pc=pc->prior;</p><p> pa=pa->next;</p><p><b> }</b></p><p> if(
89、carry!=0)</p><p><b> {</b></p><p> p=new lnode;</p><p> p->data=carry;</p><p> p->next=chead->next;</p><p> chead->next->pr
90、ior=p;</p><p> chead->next=p;</p><p> p->prior=chead;</p><p><b> }</b></p><p> cnow=cnow->prior;</p><p><b> pc=cnow;</b&
91、gt;</p><p> pa=ahead->next;</p><p> pb=pb->next;</p><p><b> }</b></p><p> putoutc(chead);</p><p> return OK;</p><p>&l
92、t;b> }</b></p><p> int divput(lnode *chead)</p><p><b> {</b></p><p> lnode *s,*pr;</p><p> pr=chead->prior;</p><p> if(pr!=ch
93、ead)</p><p> { cout<<pr->data;pr=pr->prior;}</p><p> while(pr!=chead)</p><p><b> {</b></p><p> if(pr->data==0)</p><p> cou
94、t<<"0000";</p><p> else if(pr->data>0&&pr->data<10)</p><p> cout<<"000";</p><p> else if(pr->data>=10&&pr->da
95、ta<100)</p><p> cout<<"00";</p><p> else if(pr->data>=100&&pr->data<1000)</p><p> cout<<"0";</p><p> cout<
96、<pr->data;</p><p><b> s=pr;</b></p><p> pr=pr->prior;</p><p><b> delete s;</b></p><p><b> }</b></p><p>
97、 cout<<endl;</p><p><b> return 0;</b></p><p><b> }</b></p><p> int div(lnodelist &ahead,lnodelist &bhead)</p><p><b> {
98、</b></p><p> cout<<"輸出運(yùn)算結(jié)果為:"<<endl;</p><p> lnode *pa,*pb,*s,*p;</p><p> int borrow=0,diffe,count=0,q,acount=0,bcount=0,e; //借位e=ahead->data*bhea
99、d->data;</p><p> cout<<"輸出運(yùn)算結(jié)果為:"<<endl;</p><p> cout<<"商為";if(e==-1){cout<<"-";}</p><p> while(borrow==0)</p>&
100、lt;p><b> {</b></p><p> compare(ahead,bhead,q);</p><p> if(q==0){borrow=1;cout<<++count<<",余數(shù)為0"<<endl;}</p><p> else if(q==-1){borrow=
101、1;cout<<count<<",余數(shù)為";divput(ahead);}</p><p><b> else</b></p><p><b> { </b></p><p> count=count+1;</p><p> pa=ahead-&g
102、t;next;</p><p> pb=bhead->next;</p><p> while(pa!=ahead&&pb!=bhead)</p><p><b> {</b></p><p> diffe=pa->data-borrow-pb->data;</p>
103、<p> if(diffe<0){borrow=1;diffe=diffe+10000;}</p><p> else borrow=0;</p><p> pa->data=diffe;</p><p> pa = pa->next;</p><p> pb = pb->next;</p&
104、gt;<p><b> }</b></p><p> if(pa!=ahead)</p><p><b> {</b></p><p> while(pa!=ahead)</p><p><b> {</b></p><p>
105、 diffe=pa->data-borrow;</p><p> if (diffe<0){borrow=1;diffe+=10000;}else borrow=0;</p><p> pa->data=diffe;</p><p> pa=pa->next;</p><p><b> }</
106、b></p><p><b> }</b></p><p> p=pa->prior;</p><p> while(p->data==0&&p->prior!=ahead)</p><p><b> {</b></p><p&
107、gt; s=p;p=p->prior;</p><p> ahead->prior=p;</p><p> p->next=ahead;</p><p><b> delete s;</b></p><p><b> }</b></p><p>&
108、lt;b> }</b></p><p> }return 0;</p><p><b> }</b></p><p> int xuan(int &c)</p><p><b> {</b></p><p> cout<<&
109、quot;*************請(qǐng)選擇要進(jìn)行的操作:***********"<<endl;</p><p> cout<<"1.加法運(yùn)算 2.減法運(yùn)算 3.乘法運(yùn)算 4.除法運(yùn)算"<<endl;</p><p><b> cin>>c;</b></p><p&
110、gt;<b> return 0;</b></p><p><b> }</b></p><p> int main()</p><p><b> {</b></p><p> int c,h;char b;</p><p> lnodeli
111、st ahead,bhead;</p><p> inputa(ahead);</p><p> inputb(bhead);</p><p><b> do</b></p><p><b> {</b></p><p><b> xuan(c);<
112、/b></p><p><b> switch(c)</b></p><p><b> {</b></p><p> case 1:add(ahead,bhead);break;</p><p> case 2:sub(ahead,bhead);break;</p>&l
113、t;p> case 3:mul(ahead,bhead);break;</p><p> case 4:div(ahead,bhead);break;</p><p><b> }</b></p><p> cout<<"***是否還要進(jìn)行其他運(yùn)算操作,是選擇Y,否選擇N;***"<<e
114、ndl;</p><p><b> cin>>b;</b></p><p> if(b=='Y')h=1;</p><p><b> else h=0;</b></p><p> }while(h);</p><p><b>
115、return 0;</b></p><p><b> }}</b></p><p><b> 第五章 運(yùn)行與測(cè)試</b></p><p><b> 1、遇到的問(wèn)題</b></p><p> ?。?)剛開(kāi)始考慮進(jìn)位問(wèn)題過(guò)于簡(jiǎn)單,有許多的細(xì)節(jié)沒(méi)有注意,導(dǎo)致測(cè)試數(shù)據(jù)
116、時(shí)多次出錯(cuò)。</p><p> ?。?)在還沒(méi)有想清楚的時(shí)候就急于編寫(xiě)代碼,以至于寫(xiě)的程序無(wú)法運(yùn)行,所用到的運(yùn)算法則不對(duì)</p><p> (3)開(kāi)始寫(xiě)程序時(shí)源程序沒(méi)有嚴(yán)格按單元模塊結(jié)構(gòu)編寫(xiě),可讀性較差。</p><p> ?。?)由于初次進(jìn)行系統(tǒng)的程序設(shè)計(jì),層次結(jié)構(gòu)劃分不太合理,應(yīng)在以后的設(shè)計(jì)中強(qiáng)化此思維,逐漸與工程設(shè)計(jì)接軌。</p><p&
117、gt;<b> 2、測(cè)試數(shù)據(jù):</b></p><p><b> 第六章 總結(jié)與心得</b></p><p> 經(jīng)過(guò)這幾天的編程,我發(fā)現(xiàn)我有好多的不足,給了我好多的啟發(fā),我感覺(jué)能變出一道題目來(lái),真的很開(kāi)心。在平常的學(xué)習(xí)中,沒(méi)有發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)有什么用處,于是也不太在意,但編完程序后,我知道了,其實(shí)基礎(chǔ)的東西才要掌握的更熟練。</p>
118、<p> 我也深深的感到,細(xì)節(jié)決定程序的好壞,一個(gè)程序,可能就一點(diǎn)小毛病但卻能使整個(gè)程序不能運(yùn)行,必須要一點(diǎn)一點(diǎn)的去查找,所以在以后的編程中,還要細(xì)心,不可以馬馬虎虎的,這樣對(duì)以后的編程是一個(gè)大麻煩。在以后我要好好學(xué)習(xí),努力專研這門(mén)專業(yè)。不斷的擴(kuò)大自己的知識(shí)和閱讀量。</p><p><b> 參考文獻(xiàn):</b></p><p> [1] 嚴(yán)蔚敏、
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-長(zhǎng)整數(shù)運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-長(zhǎng)整數(shù)加減運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--長(zhǎng)整數(shù)的四則運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--大整數(shù)的運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)-任意長(zhǎng)整數(shù)加法
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告-多項(xiàng)式計(jì)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--簡(jiǎn)單計(jì)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——課程設(shè)計(jì)報(bào)告模板
評(píng)論
0/150
提交評(píng)論