版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì) 任 務(wù) 書</p><p><b> 課程設(shè)計(jì)課題:</b></p><p> 第一題: 在順序結(jié)構(gòu)、動(dòng)態(tài)鏈表結(jié)構(gòu)下實(shí)現(xiàn)一元多項(xiàng)式的加法、減法、乘法運(yùn)算。</p><p><b> 設(shè)有一元多項(xiàng)式和</b></p><p><b>
2、 請(qǐng)實(shí)現(xiàn)求:</b></p><p> 要求:1)首先判定多項(xiàng)式是否稀疏;</p><p> 2)分別采用順序和動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn);</p><p> 3)結(jié)果中無重復(fù)階項(xiàng)、無零系數(shù)項(xiàng);</p><p> 4)要求輸出結(jié)果的升冪和降冪兩種排列情況。</p><p> 第二題:猴子吃桃問題:</
3、p><p> 有一群猴子摘了一堆桃子,它們每天都吃當(dāng)前桃子的一半再多吃一個(gè),到了第10天就剩下一個(gè)桃子,用多種方法實(shí)現(xiàn)求出原來這群猴子共摘了多少桃子。</p><p> 要求:1)采用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解;</p><p> 2)采用鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)。</p><p> 一、課程設(shè)計(jì)工作日自 2012 年 2 月
4、 21 日至 2012 年 3 月 2 日</p><p> 二、同組學(xué)生: 無 。</p><p> 三、課程設(shè)計(jì)任務(wù)要求(包括課題來源、類型、目的和意義、基本要求、完成時(shí)間、主要參考資料等):</p><p>&
5、lt;b> 課題來源:教師提供</b></p><p><b> 課題類型:設(shè)計(jì)</b></p><p> 目的和意義:通過數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)掌握在C語言中結(jié)構(gòu)體的建立和使用,并能用合適的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)大型程序</p><p> 完成時(shí)間:2012年2月29日</p><p><b>
6、主要參考資料:</b></p><p> [1] 嚴(yán)蔚敏.?dāng)?shù)據(jù)結(jié)構(gòu)(C語言版).清華大學(xué)出版社,2007</p><p> [2] 嚴(yán)蔚敏.?dāng)?shù)據(jù)結(jié)構(gòu)題集(C語言版).清華大學(xué)出版社,2007</p><p> [3] 譚浩強(qiáng).C語言程序設(shè)計(jì).清華大學(xué)出版社,2005</p><p> [4] 與所用編程環(huán)境相配套的C語言或
7、C++相關(guān)的資料</p><p> 指導(dǎo)教師簽字: 教研室主任簽字: </p><p> 2012年2月29日</p><p><b> 一、設(shè)計(jì)分析</b></p><p> 順序結(jié)構(gòu)、動(dòng)態(tài)鏈表結(jié)構(gòu)下的一元多項(xiàng)式的加法、減法、乘法的實(shí)現(xiàn)??梢苑譃閹讉€(gè)模塊:輸入模塊、輸出模塊(升冪
8、降冪)、數(shù)據(jù)處理模塊(多項(xiàng)式的加減乘)、主程序模塊。</p><p> 在程序過程中加入漢字提示符,讓讀者清楚明白的操作該程序。運(yùn)行程序時(shí)看起來簡(jiǎn)潔有序,操作簡(jiǎn)單明了。</p><p> 程序執(zhí)行時(shí)的命令:①選擇創(chuàng)建兩個(gè)一元多項(xiàng)式②輸入第一個(gè)一元多項(xiàng)式的項(xiàng)數(shù)③依次輸入一元多項(xiàng)式的系數(shù)和指數(shù)④以相同方式輸入第二個(gè)一元多項(xiàng)式⑤選擇操作方式⑥選擇降冪或升冪排序⑦輸出結(jié)果⑧是否退出</p
9、><p> 4.測(cè)試數(shù)據(jù)。輸入的一元多項(xiàng)式系數(shù)指數(shù)分別為7 0,3 1,9 8,5 17和8 1,22 7,-9 8。加法結(jié)果為;升冪 降冪</p><p> 減法結(jié)果為:升冪 降冪</p><p> 乘法結(jié)果為:升冪 降冪</p>&l
10、t;p><b> 二、具體設(shè)計(jì)概要</b></p><p> 1、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì) </p><p> 在該程序中分別分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。</p><p><b> 2、算法的設(shè)計(jì)</b></p><p> 本程序主要分為四大模塊</p><p><
11、;b> ?、僦鞒绦蚰K</b></p><p> ?、谳斎肽K:通過Getpolyn函數(shù)輸入</p><p> ?、圯敵瞿K(升冪降冪):PrintPolyn函數(shù)實(shí)現(xiàn)輸出</p><p> ④數(shù)據(jù)處理模塊(多項(xiàng)式的加減乘):通過一元多項(xiàng)式的Polynomial基本操作實(shí)現(xiàn)</p><p> 3、抽象數(shù)據(jù)類型的設(shè)計(jì)<
12、/p><p> 一元多項(xiàng)式抽象數(shù)據(jù)類型的定義:</p><p> 抽象數(shù)據(jù)類型Polynomial的定義:</p><p> 三、詳細(xì)程序設(shè)計(jì)及運(yùn)行結(jié)果:</p><p><b> 第一題</b></p><p><b> 程序及運(yùn)行結(jié)果:</b></p>
13、<p> #include<iostream></p><p> using namespace std;</p><p> struct term</p><p><b> {</b></p><p> float xishu; //系數(shù)</p><p>
14、 int zhishu; //指數(shù)</p><p><b> };</b></p><p> struct LNode</p><p><b> { </b></p><p> term data; //term多項(xiàng)式值</p><p>
15、 struct LNode *next;</p><p><b> };</b></p><p> typedef LNode* polynomail;</p><p><b> /*合并同類項(xiàng)*/</b></p><p> polynomail hebing(polynomail Hea
16、d)</p><p><b> {</b></p><p> polynomail r,q,p,Q;</p><p> for(q=Head->next;q!=NULL;q=q->next)//合并同類項(xiàng)</p><p> for(p=q->next,r=q;p!=NULL;)</p>
17、;<p> if(q->data.zhishu==p->data.zhishu)</p><p><b> { </b></p><p> q->data.xishu=q->data.xishu+p->data.xishu;</p><p> r->next=p->next;<
18、;/p><p> Q=p;p=p->next;</p><p><b> delete Q;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>
19、</p><p> r=r->next;</p><p> p=p->next;</p><p><b> }</b></p><p> return Head;</p><p><b> }</b></p><p> /*由小
20、到大排列*/</p><p> void arrange1(polynomail pa)</p><p><b> {</b></p><p> polynomail h=pa,p,q,r;</p><p> for(p=pa;p->next!=NULL;p=p->next);r=p;</p&g
21、t;<p> while(h->next!=r)//大的沉底</p><p><b> {</b></p><p> for(p=h;p->next!=r&&p!=r;p=p->next)</p><p> if(p->next->data.zhishu>p->ne
22、xt->next->data.zhishu)</p><p><b> {</b></p><p> q=p->next->next;</p><p> p->next->next=q->next;</p><p> q->next=p->next;</
23、p><p> p->next=q;</p><p><b> }</b></p><p> r=p;//r指向參與比較的最后一個(gè),不斷向前移動(dòng)</p><p><b> }</b></p><p><b> }</b></p>
24、<p> /*由大到小排序*/</p><p> void arrange2(polynomail pa)</p><p><b> { </b></p><p> polynomail h=pa,p,q,r;</p><p> for(p=pa;p->next!=NULL;p=p->ne
25、xt); r=p;</p><p> while(h->next!=r)//小的沉底</p><p><b> {</b></p><p> for(p=h;p->next!=r&&p!=r;p=p->next)</p><p> if(p->next->data.
26、zhishu<p->next->next->data.zhishu)</p><p><b> { </b></p><p> q=p->next->next;</p><p> p->next->next=q->next;</p><p> q->ne
27、xt=p->next;</p><p> p->next=q;</p><p><b> }</b></p><p> r=p;//r指向參與比較的最后一個(gè),不斷向前移動(dòng)</p><p><b> } </b></p><p><b> }&l
28、t;/b></p><p> bool judge(polynomail Head)</p><p><b> {</b></p><p> arrange2(Head);</p><p> polynomail p;</p><p> p=Head->next;</p
29、><p> bool xi=false;</p><p> while(p!=NULL&&p->next!=NULL&&!xi)</p><p><b> {</b></p><p> if(p->data.zhishu-p->next->data.zhishu
30、>1)</p><p><b> xi=true;</b></p><p> p=p->next;</p><p><b> }</b></p><p> return xi;</p><p><b> }</b></p>
31、;<p> /*打印多項(xiàng)式,求項(xiàng)數(shù)*/</p><p> void printpolyn(polynomail P)</p><p><b> {</b></p><p><b> int i;</b></p><p> polynomail q;</p>&l
32、t;p> if(P==NULL)</p><p> cout<<"無項(xiàng)\n";</p><p> else if(P->next==NULL)</p><p> cout<<"Y=0\n";</p><p><b> else</b>&
33、lt;/p><p><b> {</b></p><p> cout<<"該多項(xiàng)式為Y=";</p><p> q=P->next;</p><p><b> i=1;</b></p><p> if(q->data.xish
34、u!=0&&q->data.zhishu!=0)</p><p><b> {</b></p><p> cout<<q->data.xishu<<"X^"<<q->data.zhishu;</p><p><b> i++; </b
35、></p><p><b> }</b></p><p> if(q->data.zhishu==0&&q->data.xishu!=0)</p><p> cout<<q->data.xishu;//打印第一項(xiàng)</p><p> q=q->next;&l
36、t;/p><p> if(q==NULL)</p><p><b> {</b></p><p> cout<<"\n";</p><p><b> return ;</b></p><p><b> }</b>&l
37、t;/p><p> while(1)//while中,打印剩下項(xiàng)中系數(shù)非零的項(xiàng), </p><p><b> {</b></p><p> if(q->data.xishu!=0&&q->data.zhishu!=0)</p><p><b> {</b>
38、</p><p> if(q->data.xishu>0) </p><p> cout<<"+";</p><p> cout<<q->data.xishu<<"X^"<<q->data.zhishu;</p><p>&l
39、t;b> i++;</b></p><p><b> }</b></p><p> if(q->data.zhishu==0&&q->data.xishu!=0)</p><p><b> { </b></p><p> if(q->da
40、ta.xishu>0) cout<<"+";</p><p> cout<<q->data.xishu;</p><p><b> }</b></p><p> q=q->next;</p><p> if(q==NULL)</p>&
41、lt;p><b> {</b></p><p> cout<<"\n";</p><p><b> break; </b></p><p><b> }</b></p><p><b> }</b></
42、p><p><b> }</b></p><p><b> }</b></p><p> /*1、創(chuàng)建并初始化多項(xiàng)式鏈表*/</p><p> polynomail creatpolyn(int m)</p><p><b> {</b></
43、p><p> polynomail Head,r,s;</p><p><b> int i;</b></p><p> Head=new LNode;</p><p><b> r=Head;</b></p><p> for(i=0;i<m;i++)</
44、p><p><b> { </b></p><p> s=new LNode;</p><p> cout<<"請(qǐng)輸入第"<<i+1<<"項(xiàng)的系數(shù)和指數(shù):";</p><p> cin>>s->data.xishu>&
45、gt;s->data.zhishu;</p><p> r->next=s; r=s;</p><p><b> }</b></p><p> r->next=NULL;</p><p><b> if(m>1)</b></p><p><
46、;b> {</b></p><p> Head=hebing(Head);</p><p><b> }</b></p><p> return Head;</p><p><b> }</b></p><p> /*2、兩多項(xiàng)式相加*/<
47、/p><p> polynomail addpolyn(polynomail pa,polynomail pb)</p><p><b> {</b></p><p> polynomail s,newHead,q,p,r;int j;</p><p> p=pa->next;</p><p
48、> q=pb->next;</p><p> newHead=new LNode;</p><p> r=newHead;</p><p><b> while(p)</b></p><p><b> { </b></p><p> s=new LNo
49、de;</p><p> s->data.xishu=p->data.xishu;</p><p> s->data.zhishu=p->data.zhishu;</p><p> r->next=s; r=s;</p><p> p=p->next;</p><p>&l
50、t;b> }</b></p><p><b> while(q)</b></p><p><b> { </b></p><p> s=new LNode;</p><p> s->data.xishu=q->data.xishu;</p>&l
51、t;p> s->data.zhishu=q->data.zhishu;</p><p> r->next=s; r=s;</p><p> q=q->next;</p><p><b> }</b></p><p> r->next=NULL;</p>&l
52、t;p> if(newHead->next!=NULL&&newHead->next->next!=NULL)//合并同類項(xiàng)</p><p> newHead=hebing(newHead);</p><p> cout<<"升序 1 , 降序 2\n";</p><p> cout&
53、lt;<"選擇:";</p><p><b> cin>>j;</b></p><p> if(j==1) </p><p> arrange1(newHead);</p><p><b> else </b></p><p&g
54、t; arrange2(newHead);</p><p> return newHead;</p><p><b> }</b></p><p> /*3、兩多項(xiàng)式相減*/</p><p> polynomail subpolyn(polynomail pa,polynomail pb)</p>
55、<p><b> {</b></p><p> polynomail s,newHead,q,p,r; int j;</p><p> p=pa->next;q=pb->next;</p><p> newHead=new LNode;</p><p> r=newHead;</p
56、><p><b> while(p)</b></p><p><b> {</b></p><p> s=new LNode;</p><p> s->data.xishu=p->data.xishu;</p><p> s->data.zhishu=
57、p->data.zhishu;</p><p> r->next=s; r=s;</p><p> p=p->next;</p><p><b> }</b></p><p><b> while(q)</b></p><p><b>
58、 {</b></p><p> s=new LNode;</p><p> s->data.xishu=-q->data.xishu;</p><p> s->data.zhishu=q->data.zhishu;</p><p> r->next=s; r=s;</p>&l
59、t;p> q=q->next;</p><p><b> }</b></p><p> r->next=NULL;</p><p> if(newHead->next!=NULL&&newHead->next->next!=NULL)//合并同類項(xiàng)</p><p&g
60、t; newHead=hebing(newHead);</p><p> cout<<"升序 1 , 降序 2\n";</p><p> cout<<"選擇:";</p><p><b> cin>>j;</b></p><p><
61、;b> if(j==1) </b></p><p> arrange1(newHead);</p><p><b> else</b></p><p> arrange2(newHead);</p><p> return newHead;</p><p><b&
62、gt; }</b></p><p> /*4兩多項(xiàng)式相乘*/</p><p> polynomail mulpolyn(polynomail pa,polynomail pb)</p><p><b> { </b></p><p> polynomail s,newHead,q,p,r;</
63、p><p><b> int j;</b></p><p> newHead=new LNode;</p><p> r=newHead;</p><p> for(p=pa->next;p!=NULL;p=p->next)</p><p> for(q=pb->next;
64、q!=NULL;q=q->next)</p><p><b> {</b></p><p> s=new LNode;</p><p> s->data.xishu=p->data.xishu*q->data.xishu;</p><p> s->data.zhishu=p->
65、data.zhishu+q->data.zhishu;</p><p> r->next=s;</p><p><b> r=s;</b></p><p><b> }</b></p><p> r->next=NULL;</p><p> cou
66、t<<"升序 1 , 降序 2\n";</p><p> cout<<"選擇:";</p><p><b> cin>>j;</b></p><p> if(j==1) arrange1(newHead);</p><p> else
67、 arrange2(newHead);</p><p> if(newHead->next!=NULL&&newHead->next->next!=NULL)//合并同類項(xiàng)</p><p> newHead=hebing(newHead);</p><p> return newHead;</p>&l
68、t;p><b> }</b></p><p> /*5、銷毀已建立的兩個(gè)多項(xiàng)式*/</p><p> void delpolyn(polynomail pa,polynomail pb)</p><p><b> {</b></p><p> polynomail p,q;</
69、p><p><b> p=pa;</b></p><p> while(p!=NULL)</p><p><b> { </b></p><p><b> q=p;</b></p><p> p=p->next;</p><
70、;p><b> free(q);</b></p><p><b> }</b></p><p><b> p=pb;</b></p><p> while(p!=NULL)</p><p><b> { </b></p>&l
71、t;p><b> q=p;</b></p><p> p=p->next;</p><p><b> free(q);</b></p><p><b> }</b></p><p> cout<<"兩個(gè)多項(xiàng)式已經(jīng)銷毀\n";
72、</p><p><b> }</b></p><p> void main()</p><p><b> { </b></p><p> polynomail pa=NULL,pb=NULL;</p><p> polynomail addp=NULL,subp=
73、NULL,mulp=NULL;</p><p><b> int n,m;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> cout<<"1、創(chuàng)建兩個(gè)一元多項(xiàng)式\n";&
74、lt;/p><p> cout<<"2、兩多項(xiàng)式相加得一新多項(xiàng)式\n";</p><p> cout<<"3、兩多項(xiàng)式相減得一新多項(xiàng)式\n";</p><p> cout<<"4、兩多項(xiàng)式相乘得一新多項(xiàng)式\n";</p><p> cout&l
75、t;<"5、銷毀已建立的兩個(gè)多項(xiàng)式\n";</p><p> cout<<"6、退出\n";</p><p> cout<<"請(qǐng)選擇:";</p><p><b> cin>>n;</b></p><p><
76、b> switch(n)</b></p><p><b> {</b></p><p><b> case 1:</b></p><p> if(pa!=NULL)</p><p><b> { </b></p><p>
77、cout<<"已建立兩個(gè)一元多項(xiàng)式,請(qǐng)選擇其他操作!";</p><p><b> break;</b></p><p><b> }</b></p><p> cout<<"請(qǐng)輸入第一個(gè)多項(xiàng)式:\n";</p><p> co
78、ut<<"要輸入幾項(xiàng):";</p><p><b> cin>>m;</b></p><p> while(m==0)</p><p><b> { </b></p><p> cout<<"m不能為0,請(qǐng)重新輸入m:&quo
79、t;;</p><p><b> cin>>m;</b></p><p><b> }</b></p><p> pa=creatpolyn(m);</p><p> printpolyn(pa);</p><p> if(judge(pa))</
80、p><p> cout<<"該多項(xiàng)式稀疏\n";</p><p><b> else</b></p><p> cout<<"該多項(xiàng)式稠密\n";</p><p> cout<<"請(qǐng)輸入第二個(gè)多項(xiàng)式:\n";</p&
81、gt;<p> cout<<"要輸入幾項(xiàng):";</p><p><b> cin>>m;</b></p><p> pb=creatpolyn(m);</p><p> printpolyn(pb);</p><p> if(judge(pb))<
82、/p><p> cout<<"該多項(xiàng)式稀疏\n";</p><p><b> else</b></p><p> cout<<"該多項(xiàng)式稠密\n";</p><p><b> break;</b></p><p&
83、gt;<b> case 2:</b></p><p> if(pa==NULL)</p><p><b> { </b></p><p> cout<<"請(qǐng)先創(chuàng)建兩個(gè)一元多項(xiàng)式!\n";</p><p><b> break;</b>
84、</p><p><b> }</b></p><p> addp=addpolyn(pa,pb);</p><p> printpolyn(addp);</p><p><b> break;</b></p><p><b> case 3:</b
85、></p><p> if(pa==NULL)</p><p><b> {</b></p><p> cout<<"請(qǐng)先創(chuàng)建兩個(gè)一元多項(xiàng)式!\n";</p><p><b> break;</b></p><p><b&g
86、t; }</b></p><p> subp=subpolyn(pa,pb);</p><p> printpolyn(subp);</p><p><b> break;</b></p><p><b> case 4:</b></p><p> i
87、f(pa==NULL)</p><p><b> {</b></p><p> cout<<"請(qǐng)先創(chuàng)建兩個(gè)一元多項(xiàng)式!\n";</p><p><b> break;</b></p><p><b> } </b></p>
88、<p> mulp=mulpolyn(pa,pb);</p><p> printpolyn(mulp);</p><p><b> break;</b></p><p> case 5: </p><p> if(pa==NULL)</p><p><b>
89、{</b></p><p> cout<<"請(qǐng)先創(chuàng)建兩個(gè)一元多項(xiàng)式!\n";</p><p><b> break;</b></p><p><b> }</b></p><p> delpolyn(pa,pb);</p><p
90、> pa=pb=NULL;</p><p><b> break;</b></p><p><b> case 6:</b></p><p> delpolyn(pa,pb);</p><p><b> exit(0);</b></p><p
91、><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> s</b></p><p><b> 第二題</b></p><p>
92、;<b> 程序及運(yùn)行結(jié)果:</b></p><p> public class Monkey {</p><p><b> //主函數(shù)</b></p><p> public static void main(String[] args) {</p><p> List l = new
93、List();</p><p> l.array();</p><p><b> l.link();</b></p><p><b> }</b></p><p><b> }</b></p><p> //構(gòu)成鏈表的結(jié)點(diǎn)定義</p>
94、;<p> public class Node {</p><p> public Node next;</p><p> public Object data;</p><p> public Node(Object data, Node next) {</p><p> this.data = data;</
95、p><p> this.next = next;</p><p><b> }</b></p><p><b> }</b></p><p> public class List {</p><p> private Node Head = null;</p>
96、;<p> private Node Tail = null;</p><p> private Node Pointer = null;</p><p> private int Length = 0;</p><p> //在當(dāng)前結(jié)點(diǎn)前插入一個(gè)結(jié)點(diǎn),并使其成為當(dāng)前結(jié)點(diǎn)</p><p> public void in
97、sert(Object d) {</p><p> Node e = new Node(d, null);</p><p> if(Length == 0) {</p><p><b> Tail = e;</b></p><p><b> Head = e;</b></p>
98、<p><b> } else {</b></p><p> Node temp = cursor();</p><p> e.next = temp;</p><p> if(Pointer == null)</p><p><b> Head = e;</b></p&g
99、t;<p><b> else</b></p><p> Pointer.next = e;</p><p><b> }</b></p><p> Length ++;</p><p><b> }</b></p><p>
100、//將當(dāng)前結(jié)點(diǎn)移出鏈表,下一個(gè)結(jié)點(diǎn)成為當(dāng)前結(jié)點(diǎn),如果移出的結(jié)點(diǎn)是最后一個(gè)結(jié)點(diǎn),則第一個(gè)結(jié)點(diǎn)成為當(dāng)前結(jié)點(diǎn)</p><p> public Object remove() {</p><p> Object temp;</p><p> if(Length == 0)</p><p><b> return 0;</b&g
101、t;</p><p> else if(Length == 1) {</p><p> temp = Head.data;</p><p> deleteAll();</p><p><b> }</b></p><p><b> else {</b></p&
102、gt;<p> Node cur = cursor();</p><p> temp = cur.data;</p><p> if(cur == Head)</p><p> Head = cur.next;</p><p> else if(cur == Tail) {</p><p>
103、Pointer.next = null;</p><p> Tail = Pointer;</p><p><b> reset();</b></p><p><b> }</b></p><p><b> else</b></p><p>
104、Pointer.next = cur.next;</p><p> Length --;</p><p><b> }</b></p><p> return temp;</p><p><b> }</b></p><p> //返回當(dāng)前結(jié)點(diǎn)的指針</p&g
105、t;<p> private Node cursor() {</p><p> if(Head == null)</p><p> return null;</p><p> else if(Pointer == null)</p><p> return Head;</p><p><b
106、> else</b></p><p> return Pointer.next;</p><p><b> }</b></p><p> //返回當(dāng)前結(jié)點(diǎn)的值</p><p> public Object currentNode() {</p><p> Node t
107、emp = cursor();</p><p> return temp.data;</p><p><b> }</b></p><p> public void deleteAll() {</p><p> Head = null;</p><p> Tail = null;<
108、/p><p> Pointer = null;</p><p> Length = 0;</p><p><b> }</b></p><p> public void reset() {</p><p> Pointer = null;</p><p><b&
109、gt; }</b></p><p><b> //鏈表實(shí)現(xiàn)</b></p><p> public void link() {</p><p> int s = 0;</p><p> List a=new List ();</p><p> for(int i=1;i&l
110、t;=10;i++) {</p><p> if(a.Length == 9) {</p><p><b> s = 1;</b></p><p> while(a.Length != 0) {</p><p> s = s*2 + 2;</p><p> a.remove();<
111、/p><p><b> }</b></p><p> System.out.println("鏈表實(shí)現(xiàn):");</p><p> System.out.println("桃子總數(shù): " + s);</p><p> } else a.insert(new Integer(i)
112、);</p><p><b> }</b></p><p><b> }</b></p><p><b> //數(shù)組實(shí)現(xiàn)</b></p><p> public void array() {</p><p> int a[] = new int
113、[10];</p><p><b> a[9] = 1;</b></p><p> for(int i=a.length-2; i>=0; i--) {</p><p> a[i] = 2 * a[i+1] +2;</p><p><b> }</b></p><p
114、> System.out.println("數(shù)組實(shí)現(xiàn):");</p><p> System.out.println("桃子總數(shù): " + a[0]);</p><p> System.out.println("****************");</p><p><b> }&
115、lt;/b></p><p><b> }</b></p><p> 1)package com.zw.tute.list;</p><p> public class Monkey {</p><p> public static void main(String[] args) {</p>
116、<p> List l = new List();</p><p> l.array();</p><p><b> l.link();</b></p><p><b> }</b></p><p><b> }</b></p><p&
117、gt; 2)package com.zw.tute.list;</p><p> //構(gòu)成鏈表的結(jié)點(diǎn)定義</p><p> public class Node {</p><p> public Node next;</p><p> public Object data;</p><p> public
118、Node(Object data, Node next) {</p><p> this.data = data;</p><p> this.next = next;</p><p><b> }</b></p><p><b> }</b></p><p> /
119、/具體方法實(shí)現(xiàn)要求</p><p> 3)package com.zw.tute.list;</p><p> public class List {</p><p> private Node Head = null;</p><p> private Node Tail = null;</p><p>
120、private Node Pointer = null;</p><p> private int Length = 0;</p><p> //在當(dāng)前結(jié)點(diǎn)前插入一個(gè)結(jié)點(diǎn),并使其成為當(dāng)前結(jié)點(diǎn)</p><p> public void insert(Object d) {</p><p> Node e = new Node(d, nu
121、ll);</p><p> if(Length == 0) {</p><p><b> Tail = e;</b></p><p><b> Head = e;</b></p><p><b> } else {</b></p><p> N
122、ode temp = cursor();</p><p> e.next = temp;</p><p> if(Pointer == null)</p><p><b> Head = e;</b></p><p><b> else</b></p><p> P
123、ointer.next = e;</p><p><b> }</b></p><p> Length ++;</p><p><b> }</b></p><p> //將當(dāng)前結(jié)點(diǎn)移出鏈表,下一個(gè)結(jié)點(diǎn)成為當(dāng)前結(jié)點(diǎn),如果移出的結(jié)點(diǎn)是最后一個(gè)結(jié)點(diǎn),則第一個(gè)結(jié)點(diǎn)成為當(dāng)前結(jié)點(diǎn)</p>
124、<p> public Object remove(Object temp, int k) {</p><p> if(Length == 0)</p><p><b> return 0;</b></p><p> else if(Length == 1) {</p><p> temp = He
125、ad.data;</p><p> deleteAll();</p><p><b> }</b></p><p><b> else {</b></p><p> Node cur = cursor();</p><p> temp = cur.data;<
126、/p><p> if(cur == Head)</p><p> Head = cur.next;</p><p> else if(cur == Tail) {</p><p> Pointer.next = null;</p><p> Tail = Pointer;</p><p>
127、<b> reset();</b></p><p><b> }</b></p><p><b> else</b></p><p> Pointer.next = cur.next;</p><p> Length --;</p><p>&
128、lt;b> }</b></p><p> return temp;</p><p><b> }</b></p><p> //返回當(dāng)前結(jié)點(diǎn)的指針</p><p> private Node cursor() {</p><p> if(Head == null)&l
129、t;/p><p> return null;</p><p> else if(Pointer == null)</p><p> return Head;</p><p><b> else</b></p><p> return Pointer.next;</p><
130、p><b> }</b></p><p> //返回當(dāng)前結(jié)點(diǎn)的值</p><p> public Object currentNode() {</p><p> Node temp = cursor();</p><p> return temp.data;</p><p><
131、;b> }</b></p><p> public void deleteAll() {</p><p> Head = null;</p><p> Tail = null;</p><p> Pointer = null;</p><p> Length = 0;</p>
132、<p><b> }</b></p><p> public void reset() {</p><p> Pointer = null;</p><p><b> }</b></p><p><b> //鏈表實(shí)現(xiàn)</b></p><
133、;p> public void link() {</p><p> int s = 0;</p><p> List a=new List ();</p><p> for(int i=1;i<=10;i++) {</p><p> if(a.Length == 9) {</p><p><
134、b> s = 1;</b></p><p> while(a.Length != 0) {</p><p> s = s*2 + 2;</p><p> a.remove(new Integer(10-i), s);</p><p><b> }</b></p><p>
135、; System.out.println("鏈表實(shí)現(xiàn):");</p><p> System.out.println("桃子總數(shù)= " + s);</p><p> } else a.insert(new Integer(i));</p><p><b> }</b></p>&l
136、t;p><b> }</b></p><p><b> //數(shù)組實(shí)現(xiàn)</b></p><p> public void array() {</p><p> int a[] = new int[10];</p><p><b> a[9] = 1;</b><
137、;/p><p> for(int i=a.length-2; i>=0; i--) {</p><p> a[i] = 2 * a[i+1] +2;</p><p><b> }</b></p><p> System.out.println("數(shù)組實(shí)現(xiàn):");</p><
138、;p> System.out.println("桃子總數(shù)= " + a[0]);</p><p> System.out.println("****************");</p><p><b> }</b></p><p><b> }</b></p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-猴子吃桃
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---多項(xiàng)式問題
- 猴子吃桃問題-數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---猴子吃桃子問題
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告-多項(xiàng)式計(jì)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---一元多項(xiàng)式
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--多項(xiàng)式計(jì)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----一元多項(xiàng)式
- 一元多項(xiàng)式計(jì)算(數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì))
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---一元多項(xiàng)式計(jì)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--一元多項(xiàng)式計(jì)算問題(c語言)
- c++課程設(shè)計(jì)報(bào)告---猴子吃桃問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-一元多項(xiàng)式的表示及相加
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-一元多項(xiàng)式計(jì)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式的計(jì)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-一元多項(xiàng)式加減運(yùn)算
- 一元多項(xiàng)式的計(jì)算數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-一元多項(xiàng)式的代數(shù)運(yùn)算
評(píng)論
0/150
提交評(píng)論