2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論