版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計 任 務(wù) 書</p><p><b> 課程設(shè)計課題:</b></p><p> 第一題: 在順序結(jié)構(gòu)、動態(tài)鏈表結(jié)構(gòu)下實現(xiàn)一元多項式的加法、減法、乘法運算。</p><p><b> 設(shè)有一元多項式和</b></p><p><b>
2、 請實現(xiàn)求:</b></p><p> 要求:1)首先判定多項式是否稀疏;</p><p> 2)分別采用順序和動態(tài)存儲結(jié)構(gòu)實現(xiàn);</p><p> 3)結(jié)果中無重復(fù)階項、無零系數(shù)項;</p><p> 4)要求輸出結(jié)果的升冪和降冪兩種排列情況。</p><p> 第二題:猴子吃桃問題:</
3、p><p> 有一群猴子摘了一堆桃子,它們每天都吃當(dāng)前桃子的一半再多吃一個,到了第10天就剩下一個桃子,用多種方法實現(xiàn)求出原來這群猴子共摘了多少桃子。</p><p> 要求:1)采用數(shù)組數(shù)據(jù)結(jié)構(gòu)實現(xiàn)上述求解;</p><p> 2)采用鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)。</p><p> 一、課程設(shè)計工作日自 2012 年 2 月
4、 21 日至 2012 年 3 月 2 日</p><p> 二、同組學(xué)生: 無 。</p><p> 三、課程設(shè)計任務(wù)要求(包括課題來源、類型、目的和意義、基本要求、完成時間、主要參考資料等):</p><p>&
5、lt;b> 課題來源:教師提供</b></p><p><b> 課題類型:設(shè)計</b></p><p> 目的和意義:通過數(shù)據(jù)結(jié)構(gòu)課程設(shè)計掌握在C語言中結(jié)構(gòu)體的建立和使用,并能用合適的數(shù)據(jù)結(jié)構(gòu)設(shè)計大型程序</p><p> 完成時間: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] 譚浩強.C語言程序設(shè)計.清華大學(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è)計分析</b></p><p> 順序結(jié)構(gòu)、動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法、減法、乘法的實現(xiàn)??梢苑譃閹讉€模塊:輸入模塊、輸出模塊(升冪
8、降冪)、數(shù)據(jù)處理模塊(多項式的加減乘)、主程序模塊。</p><p> 在程序過程中加入漢字提示符,讓讀者清楚明白的操作該程序。運行程序時看起來簡潔有序,操作簡單明了。</p><p> 程序執(zhí)行時的命令:①選擇創(chuàng)建兩個一元多項式②輸入第一個一元多項式的項數(shù)③依次輸入一元多項式的系數(shù)和指數(shù)④以相同方式輸入第二個一元多項式⑤選擇操作方式⑥選擇降冪或升冪排序⑦輸出結(jié)果⑧是否退出</p
9、><p> 4.測試數(shù)據(jù)。輸入的一元多項式系數(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è)計概要</b></p><p> 1、數(shù)據(jù)結(jié)構(gòu)的設(shè)計 </p><p> 在該程序中分別分為順序存儲和鏈?zhǔn)酱鎯Y(jié)構(gòu)。</p><p><b> 2、算法的設(shè)計</b></p><p> 本程序主要分為四大模塊</p><p><
11、;b> ?、僦鞒绦蚰K</b></p><p> ?、谳斎肽K:通過Getpolyn函數(shù)輸入</p><p> ③輸出模塊(升冪降冪):PrintPolyn函數(shù)實現(xiàn)輸出</p><p> ?、軘?shù)據(jù)處理模塊(多項式的加減乘):通過一元多項式的Polynomial基本操作實現(xiàn)</p><p> 3、抽象數(shù)據(jù)類型的設(shè)計<
12、/p><p> 一元多項式抽象數(shù)據(jù)類型的定義:</p><p> 抽象數(shù)據(jù)類型Polynomial的定義:</p><p> 三、詳細(xì)程序設(shè)計及運行結(jié)果:</p><p><b> 第一題</b></p><p><b> 程序及運行結(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多項式值</p><p>
15、 struct LNode *next;</p><p><b> };</b></p><p> typedef LNode* polynomail;</p><p><b> /*合并同類項*/</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)//合并同類項</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指向參與比較的最后一個,不斷向前移動</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指向參與比較的最后一個,不斷向前移動</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> /*打印多項式,求項數(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<<"無項\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<<"該多項式為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;//打印第一項</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中,打印剩下項中系數(shù)非零的項, </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)建并初始化多項式鏈表*/</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<<"請輸入第"<<i+1<<"項的系數(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、兩多項式相加*/<
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)//合并同類項</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、兩多項式相減*/</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)//合并同類項</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兩多項式相乘*/</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)//合并同類項</p><p> newHead=hebing(newHead);</p><p> return newHead;</p>&l
68、t;p><b> }</b></p><p> /*5、銷毀已建立的兩個多項式*/</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<<"兩個多項式已經(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)建兩個一元多項式\n";&
74、lt;/p><p> cout<<"2、兩多項式相加得一新多項式\n";</p><p> cout<<"3、兩多項式相減得一新多項式\n";</p><p> cout<<"4、兩多項式相乘得一新多項式\n";</p><p> cout&l
75、t;<"5、銷毀已建立的兩個多項式\n";</p><p> cout<<"6、退出\n";</p><p> cout<<"請選擇:";</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<<"已建立兩個一元多項式,請選擇其他操作!";</p><p><b> break;</b></p><p><b> }</b></p><p> cout<<"請輸入第一個多項式:\n";</p><p> co
78、ut<<"要輸入幾項:";</p><p><b> cin>>m;</b></p><p> while(m==0)</p><p><b> { </b></p><p> cout<<"m不能為0,請重新輸入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<<"該多項式稀疏\n";</p><p><b> else</b></p><p> cout<<"該多項式稠密\n";</p><p> cout<<"請輸入第二個多項式:\n";</p&
81、gt;<p> cout<<"要輸入幾項:";</p><p><b> cin>>m;</b></p><p> pb=creatpolyn(m);</p><p> printpolyn(pb);</p><p> if(judge(pb))<
82、/p><p> cout<<"該多項式稀疏\n";</p><p><b> else</b></p><p> cout<<"該多項式稠密\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<<"請先創(chuà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<<"請先創(chuà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<<"請先創(chuà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<<"請先創(chuà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> 程序及運行結(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é)點定義</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é)點前插入一個結(jié)點,并使其成為當(dāng)前結(jié)點</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é)點移出鏈表,下一個結(jié)點成為當(dāng)前結(jié)點,如果移出的結(jié)點是最后一個結(jié)點,則第一個結(jié)點成為當(dāng)前結(jié)點</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é)點的指針</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é)點的值</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> //鏈表實現(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("鏈表實現(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ù)組實現(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ù)組實現(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é)點定義</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、/具體方法實現(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é)點前插入一個結(jié)點,并使其成為當(dāng)前結(jié)點</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é)點移出鏈表,下一個結(jié)點成為當(dāng)前結(jié)點,如果移出的結(jié)點是最后一個結(jié)點,則第一個結(jié)點成為當(dāng)前結(jié)點</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é)點的指針</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é)點的值</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> //鏈表實現(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("鏈表實現(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ù)組實現(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ù)組實現(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 猴子吃桃問題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-猴子吃桃
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---多項式問題
- 猴子吃桃問題-數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---猴子吃桃子問題
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計報告-多項式計算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---一元多項式
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--多項式計算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----一元多項式
- 一元多項式計算(數(shù)據(jù)結(jié)構(gòu)課程設(shè)計)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---一元多項式計算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--一元多項式計算問題(c語言)
- c++課程設(shè)計報告---猴子吃桃問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-一元多項式的表示及相加
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-一元多項式計算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告一元多項式的計算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告一元多項式的實現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-一元多項式加減運算
- 一元多項式的計算數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-一元多項式的代數(shù)運算
評論
0/150
提交評論