2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩33頁(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、<p><b>  課程設(shè)計(jì)(論文)</b></p><p>  題 目 名 稱(chēng) 一元多項(xiàng)式的加法、減法、乘法的實(shí)現(xiàn) </p><p>  課 程 名 稱(chēng) 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) </p><p>  學(xué) 生 姓 名 </p>

2、;<p>  學(xué) 號(hào) </p><p>  系 、專(zhuān) 業(yè) 信息工程系、通信工程 </p><p>  指 導(dǎo) 教 師 </p><p>  2012年 12 月 23 日&

3、lt;/p><p><b>  摘 要</b></p><p>  設(shè)有一元多項(xiàng)式Am(x)和Bn(x):</p><p>  Am(x)=A0+A1x+A2x2+A3x3+… +Amxm</p><p>  Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn</p><p>  分別采

4、用順序和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)實(shí)現(xiàn):M(x)=Am(x)+Bn(x)、M(x)=Am(x)-Bn(x)和M(x)=Am(x)×Bn(x)。并要結(jié)果M(x)中無(wú)重復(fù)階項(xiàng)和無(wú)零系數(shù)項(xiàng),且輸出結(jié)果用升冪和降冪兩種排列情況。</p><p>  關(guān)鍵詞:一元多項(xiàng)式;順序存儲(chǔ);鏈?zhǔn)酱鎯?chǔ);升冪;降冪</p><p><b>  目 錄</b></p><p&

5、gt;<b>  1 問(wèn)題描述1</b></p><p><b>  2 需求分析1</b></p><p><b>  3 概要設(shè)計(jì)1</b></p><p>  3.1抽象數(shù)據(jù)類(lèi)型定義1</p><p><b>  3.2模塊劃分2</b>&

6、lt;/p><p><b>  4 詳細(xì)設(shè)計(jì)3</b></p><p>  4.1數(shù)據(jù)類(lèi)型的定義3</p><p>  4.2主要模塊的算法描述3</p><p><b>  5 測(cè)試分析7</b></p><p>  6 課程設(shè)計(jì)總結(jié)10</p><

7、;p><b>  參考文獻(xiàn)10</b></p><p>  附錄(源程序清單)11</p><p><b>  1 問(wèn)題描述</b></p><p>  設(shè)有一元多項(xiàng)式Am(x)和Bn(x):</p><p>  Am(x)=A0+A1x+A2x2+A3x3+… +Amxm</p&g

8、t;<p>  Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn</p><p>  實(shí)現(xiàn)M(x)=Am(x)+Bn(x)、M(x)=Am(x)-Bn(x)、M(x)=Am(x)×Bn(x)。</p><p><b>  要求: </b></p><p> ?。?)分別采用順序和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)實(shí)現(xiàn);</

9、p><p> ?。?)結(jié)果M(x)中無(wú)重復(fù)階項(xiàng)和無(wú)零系數(shù)項(xiàng);</p><p> ?。?)要求輸出結(jié)果用升冪和降冪兩種排列情況。</p><p><b>  2 需求分析</b></p><p> ?。?)用一維數(shù)組cp1[n1]和cp2[n2]存儲(chǔ)一元多項(xiàng)式Am(x)和Bn(x)的系數(shù),用for循環(huán)來(lái)計(jì)算順序結(jié)構(gòu)中的加法、減

10、法、乘法的結(jié)果。</p><p> ?。?)用指針*d,*q來(lái)存儲(chǔ)一元多項(xiàng)式的內(nèi)容,再利用指針計(jì)算動(dòng)態(tài)鏈表下一元多項(xiàng)式的加法、減法、乘法的結(jié)果。</p><p> ?。?)在用降冪升冪兩種排列輸出結(jié)果時(shí),用expn和coef表示一元多項(xiàng)式的系數(shù)和指數(shù),輸出兩種排列結(jié)果。</p><p><b>  3 概要設(shè)計(jì)</b></p>&

11、lt;p>  3.1抽象數(shù)據(jù)類(lèi)型定義</p><p>  (1)順序存儲(chǔ)結(jié)構(gòu)的抽象數(shù)據(jù)類(lèi)型定義</p><p>  int n1,n2;</p><p>  利用一維數(shù)組cp1[n1]和cp2[n2]存儲(chǔ)多項(xiàng)式的系數(shù)</p><p><b>  基本操作:</b></p><p>  voi

12、d creatpoly1(double *a,int pt)</p><p>  操作結(jié)果:建立順序結(jié)構(gòu)</p><p>  void addpoly(double *a,double *b,double *c)</p><p>  初始條件:一維數(shù)組cp1[n1]和cp2[n2]已建立</p><p>  操作結(jié)果:順序結(jié)構(gòu)相加</p

13、><p>  void subpoly(double *a,double *b,double *c)</p><p>  初始條件:一維數(shù)組cp1[n1]和cp2[n2]已建立</p><p>  操作結(jié)果:順序結(jié)構(gòu)相減 </p><p>  void mulpoly(double *a,double *b,double *c) </p&g

14、t;<p>  初始條件:一維數(shù)組cp1[n1]和cp2[n2]已建立</p><p>  操作結(jié)果:順序結(jié)構(gòu)相乘</p><p>  void ansprint(double *a,int n) </p><p>  初始條件: 一維數(shù)組cp1[n1]和cp2[n2]已建立</p><p>  操作結(jié)果:選用升冪或降冪排列打印

15、出結(jié)果</p><p>  (2)動(dòng)態(tài)鏈表結(jié)構(gòu)的抽象數(shù)據(jù)類(lèi)型定義</p><p>  typedef struct p_pol{ double coef; int expn; p_pol *next;}MPP;</p><p><b>  基本操作:</b></p><p>  MPP * creatlink(MPP *

16、p,int n,int pt)</p><p>  初始條件:動(dòng)態(tài)鏈表已定義</p><p>  操作結(jié)果:構(gòu)造動(dòng)態(tài)鏈表結(jié)構(gòu)</p><p>  void addlink(MPP *p1,MPP *p2,MPP *p3)</p><p>  初始條件:動(dòng)態(tài)鏈表已定義</p><p>  操作結(jié)果:動(dòng)態(tài)鏈表相加</

17、p><p>  void sublink(MPP *p1,MPP *p2,MPP *p3)</p><p>  初始條件:動(dòng)態(tài)鏈表已定義</p><p>  操作結(jié)果:動(dòng)態(tài)鏈表相減</p><p>  void mullink(MPP *p1,MPP *p2,MPP *p3)</p><p>  初始條件:動(dòng)態(tài)鏈表已定義&

18、lt;/p><p>  操作結(jié)果:動(dòng)態(tài)鏈表相乘</p><p>  void printlink(MPP * p)</p><p>  初始條件:動(dòng)態(tài)鏈表已定義</p><p>  操作結(jié)果:選用升冪或降冪排列打印結(jié)果</p><p>  void deletelink(MPP *p)</p><p&g

19、t;  初始條件:動(dòng)態(tài)鏈表已定義</p><p>  操作結(jié)果:刪除結(jié)點(diǎn)釋放內(nèi)存</p><p><b>  3.2模塊劃分</b></p><p>  本程序包括三個(gè)模塊:</p><p><b> ?。?)主程序模塊</b></p><p>  void main()&l

20、t;/p><p><b>  {</b></p><p>  輸入第一個(gè)多項(xiàng)式的項(xiàng)數(shù);</p><p>  分別輸入各項(xiàng)的系數(shù)和指數(shù);</p><p>  輸入第二個(gè)多項(xiàng)式的項(xiàng)數(shù);</p><p>  分別輸入各項(xiàng)的系數(shù)和指數(shù);</p><p>  請(qǐng)選擇實(shí)現(xiàn)結(jié)構(gòu):1 順序結(jié)構(gòu)

21、 2 動(dòng)態(tài)鏈表結(jié)構(gòu)</p><p>  選擇操作方式:1 相加 2 相減 3 相乘</p><p><b>  }</b></p><p> ?。?)順序存儲(chǔ)結(jié)構(gòu)模塊——實(shí)現(xiàn)順序存儲(chǔ)結(jié)構(gòu)的抽象數(shù)據(jù)類(lèi)型</p><p> ?。?)動(dòng)態(tài)鏈表結(jié)構(gòu)模塊——實(shí)現(xiàn)動(dòng)態(tài)鏈表結(jié)構(gòu)的抽象數(shù)據(jù)類(lèi)型</p><p>&

22、lt;b>  4 詳細(xì)設(shè)計(jì)</b></p><p>  4.1數(shù)據(jù)類(lèi)型的定義</p><p> ?。?)順序存儲(chǔ)結(jié)構(gòu)類(lèi)型</p><p>  int n1,n2;</p><p>  int cp1[n1]; intcp2[n2]</p><p> ?。?)動(dòng)態(tài)鏈表結(jié)構(gòu)類(lèi)型</p>&l

23、t;p>  #define INFEX 10000</p><p>  #define INFCO 10000</p><p>  double coef;</p><p><b>  int expn;</b></p><p>  p_pol *next;</p><p>  4.2主要模

24、塊的算法描述</p><p>  該題可畫(huà)三個(gè)流程圖:(1)一元多項(xiàng)式的計(jì)算主流程圖;(2)順序存儲(chǔ)結(jié)構(gòu)流程圖;(3)動(dòng)態(tài)鏈表結(jié)構(gòu)流程圖。流程圖如下:</p><p>  (1)一元多項(xiàng)式的計(jì)算主流程圖:</p><p><b>  如圖4.1所示</b></p><p>  圖4.1一元多項(xiàng)式的計(jì)算主流程圖</p

25、><p> ?。?)順序存儲(chǔ)結(jié)構(gòu)流程圖</p><p><b>  如圖4.2所示</b></p><p>  圖4.2順序存儲(chǔ)結(jié)構(gòu)流程圖</p><p>  (3)動(dòng)態(tài)鏈表結(jié)構(gòu)流程圖</p><p><b>  如圖4.3所示</b></p><p> 

26、 圖4.3動(dòng)態(tài)鏈表結(jié)構(gòu)流程圖</p><p><b>  5 測(cè)試分析</b></p><p>  測(cè)試數(shù)據(jù)及結(jié)果如下:</p><p><b>  6 課程設(shè)計(jì)總結(jié)</b></p><p>  通過(guò)這次課程設(shè)計(jì)使我了解到編寫(xiě)的程序不但要拿來(lái)使用,還要讓人看得懂。所以,代碼編寫(xiě)的風(fēng)格要盡量規(guī)范,清晰

27、。變量要盡量少定義,結(jié)構(gòu)體采用簡(jiǎn)單的。另外,對(duì)指針的使用要小心,盡量在定義的時(shí)候就進(jìn)行初始化,避免出現(xiàn)沒(méi)有被定義的指針。該程序主要實(shí)現(xiàn)了順序結(jié)構(gòu)、動(dòng)態(tài)鏈表結(jié)構(gòu)下的一元多項(xiàng)式的加法、減法、乘法等運(yùn)算功能。同時(shí),也應(yīng)用了升冪和降冪的輸出方法,輸出程序的結(jié)果。雖然此次的程序不是很完備,但是總體還是一個(gè)比較能體現(xiàn)數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn)的程序了,當(dāng)然只是相對(duì)于我這個(gè)初學(xué)者來(lái)說(shuō)。這次設(shè)計(jì)中我發(fā)現(xiàn)了自己的許多不足,如對(duì)指針的機(jī)制掌握的還不是很透徹,有的時(shí)候會(huì)

28、出現(xiàn)指針指向錯(cuò)誤以及空指針的錯(cuò)誤,還有不能很好地分析自己算法地復(fù)雜度以及不能很好地使用控制機(jī)制使自己的程序流暢地運(yùn)行。因此,在今后我會(huì)更加努力地。</p><p>  在此我要非常感謝的是我的指導(dǎo)老師黃同成老師,感謝老師的細(xì)心認(rèn)真的輔導(dǎo),讓我對(duì)數(shù)據(jù)結(jié)構(gòu)這門(mén)課程有了更多的了解,也讓我對(duì)這門(mén)課程產(chǎn)生了濃厚的興趣。在這次課程設(shè)計(jì)中我又進(jìn)一步地了解了數(shù)據(jù)結(jié)構(gòu)中算法的核心思想的重要性,懂得了一個(gè)程序地好壞關(guān)鍵在于算法是否優(yōu)

29、秀,一個(gè)好的優(yōu)秀的算法可以使我們的程序更加完善,安全性更高以及有更高的效率。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 黃同成,黃俊民,董建寅.?dāng)?shù)據(jù)結(jié)構(gòu)[M].北京:中國(guó)電力出版社,2008</p><p>  [2] 董建寅,黃俊民,黃同成.?dāng)?shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)與題解[M].北京:中國(guó)電力出版社,2008</

30、p><p>  [3] 嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M]. 北京:清華大學(xué)出版社,2002</p><p>  [4] 劉振鵬,張曉莉,郝杰.?dāng)?shù)據(jù)結(jié)構(gòu)[M].北京:中國(guó)鐵道出版社,2003</p><p><b>  附錄(源程序清單)</b></p><p>  #include<stdio.h>&

31、lt;/p><p>  #include<math.h></p><p>  #include<stdlib.h></p><p>  #define INFEX 10000</p><p>  #define INFCO 10000</p><p>  typedef struct pol<

32、/p><p><b>  {</b></p><p>  double coef;</p><p><b>  int expn;</b></p><p><b>  }MPOL;</b></p><p>  MPOL *cp1,*cp2;</p>

33、;<p>  //-----順序結(jié)構(gòu)部分-----</p><p>  int n1,n2;</p><p>  void ansprint(double *a,int n) //打印出結(jié)果</p><p><b>  {</b></p><p>  int choose;</p><

34、p>  puts("請(qǐng)選擇輸出順序:1 升冪 2 降冪:");</p><p>  scanf("%d",&choose);</p><p>  int i,num;</p><p>  if(choose!=2) //升冪打印</p><p><b>  {&l

35、t;/b></p><p>  if(choose!=1)</p><p>  printf("沒(méi)有%d選項(xiàng),系統(tǒng)將默認(rèn)輸出升序:\nM(X)=",choose);</p><p><b>  else</b></p><p>  printf("M(X)=");</p

36、><p><b>  num=0;</b></p><p>  for(i=0;i<=n;i++)</p><p>  if(fabs(a[i])>1e-8)</p><p><b>  {</b></p><p><b>  if(num++)</b

37、></p><p>  putchar('+');</p><p>  printf("%lfX^%d",a[i],i);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else

38、 //降冪打印</p><p><b>  {</b></p><p>  printf("M(X)=");</p><p><b>  num=0;</b></p><p>  for(i=n;i>=0;i--)</p><p>  if

39、(fabs(a[i])>1e-8)</p><p><b>  {</b></p><p><b>  if(num++)</b></p><p>  putchar('+');</p><p>  printf("%lfX^%d",a[i],i);<

40、/p><p><b>  }</b></p><p><b>  }</b></p><p>  putchar(10);</p><p><b>  }</b></p><p>  void addpoly(double *a,double *b,doub

41、le *c) //順序結(jié)構(gòu)相加</p><p><b>  {</b></p><p>  int min=(cp1[n1-1].expn>cp2[n2-1].expn?cp2[n2-1].expn:cp1[n1-1].expn);</p><p>  int max=(cp1[n1-1].expn<cp2[n2-1].expn

42、?cp2[n2-1].expn:cp1[n1-1].expn);</p><p><b>  int i;</b></p><p>  for(i=0;i<=min;i++)</p><p>  c[i]=a[i]+b[i];</p><p>  for(;i<=max;i++)</p><

43、;p>  if(cp1[n1-1].expn>cp2[n2-1].expn)</p><p>  c[i]=a[i];</p><p><b>  else</b></p><p>  c[i]=b[i];</p><p>  puts("相加結(jié)果為:");</p><

44、p>  ansprint(c,max);</p><p><b>  }</b></p><p>  void subpoly(double *a,double *b,double *c) //順序結(jié)構(gòu)相減</p><p><b>  {</b></p><p>  int min=(cp

45、1[n1-1].expn>cp2[n2-1].expn?cp2[n2-1].expn:cp1[n1-1].expn);</p><p>  int max=(cp1[n1-1].expn<cp2[n2-1].expn?cp2[n2-1].expn:cp1[n1-1].expn);</p><p><b>  int i;</b></p>&l

46、t;p>  for(i=0;i<=min;i++)</p><p>  c[i]=a[i]-b[i];</p><p>  for(;i<=max;i++)</p><p>  if(cp1[n1-1].expn>cp2[n2-1].expn)</p><p>  c[i]=a[i];</p><p

47、><b>  else</b></p><p>  c[i]=-b[i];</p><p>  puts("相減結(jié)果為:");</p><p>  ansprint(c,max);</p><p><b>  }</b></p><p>  void

48、 mulpoly(double *a,double *b,double *c) //順序結(jié)構(gòu)相乘</p><p><b>  {</b></p><p>  int max=cp1[n1-1].expn+cp2[n2-1].expn+2;</p><p><b>  int i,j;</b></p>&l

49、t;p>  for(i=0;i<max;i++)</p><p><b>  c[i]=0;</b></p><p>  for(i=0;i<=cp1[n1-1].expn;i++)</p><p>  for(j=0;j<=cp2[n2-1].expn;j++)</p><p>  c[i+j]

50、+=a[i]*b[j];</p><p>  puts("相乘結(jié)果為:");</p><p>  ansprint(c,max-1);</p><p><b>  }</b></p><p>  void creatpoly1(double *a,int pt) //建立順序結(jié)構(gòu)</p&g

51、t;<p><b>  {</b></p><p><b>  int i;</b></p><p><b>  if(pt==1)</b></p><p><b>  {</b></p><p>  for(i=0;i<=cp1[n1

52、-1].expn;i++)</p><p><b>  a[i]=0;</b></p><p>  for(i=0;i<n1;i++)</p><p>  a[cp1[i].expn]=cp1[i].coef;</p><p><b>  }</b></p><p>&

53、lt;b>  else</b></p><p><b>  {</b></p><p>  for(i=0;i<=cp2[n2-1].expn;i++)</p><p><b>  a[i]=0;</b></p><p>  for(i=0;i<n2;i++)</

54、p><p>  a[cp2[i].expn]=cp2[i].coef;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //-----動(dòng)態(tài)鏈?zhǔn)浇Y(jié)構(gòu)部分-----</p><p>  typedef struct p_pol

55、//結(jié)點(diǎn)定義</p><p><b>  {</b></p><p>  double coef;</p><p><b>  int expn;</b></p><p>  p_pol *next;</p><p><b>  }MPP;</b><

56、;/p><p>  MPP * creatlink(MPP *p,int n,int pt) //構(gòu)造動(dòng)態(tài)鏈表結(jié)構(gòu)</p><p><b>  {</b></p><p>  MPP *d,*q;</p><p><b>  int i;</b></p><p>  q=(M

57、PP *)malloc(sizeof(MPP));</p><p>  if(q==NULL)</p><p><b>  exit(0);</b></p><p>  q->next=NULL;</p><p>  q->coef=INFCO;</p><p>  q->exp

58、n=-INFEX;</p><p><b>  p=q;</b></p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  d=(MPP *)malloc(sizeof(MPP));</p><p>  if(d=

59、=NULL)</p><p><b>  exit(0);</b></p><p>  d->next=NULL;</p><p><b>  if(pt==1)</b></p><p><b>  {</b></p><p>  d->co

60、ef=cp1[i].coef;</p><p>  d->expn=cp1[i].expn;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  d-&g

61、t;coef=cp2[i].coef;</p><p>  d->expn=cp2[i].expn;</p><p><b>  }</b></p><p>  q->next=d;</p><p><b>  q=d;</b></p><p><b>

62、  }</b></p><p><b>  return p;</b></p><p><b>  }</b></p><p>  void printlink1(MPP * p) //打印結(jié)果Am(x)</p><p><b>  {</b></p&g

63、t;<p>  int num=0,i=0,choose,count;</p><p>  puts("請(qǐng)選擇輸出順序:1 升冪 2 降冪:");</p><p>  scanf("%d",&choose);</p><p>  MPP *tp=p;</p><p>  p=p-&

64、gt;next;</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p><b>  num++;</b></p><p>  p=p->next;</p><p><b>  }</b></

65、p><p>  MPOL *d=new MPOL[num];</p><p>  p=tp->next;</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  d[i].coef=p->coef;</p><p&g

66、t;  d[i].expn=p->expn;</p><p><b>  i++;</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  if(choose==2) //降冪打印</p><p><

67、b>  {</b></p><p><b>  count=0;</b></p><p>  printf("Am(X)=");</p><p>  for(i=num-1;i>=0;i--)</p><p><b>  {</b></p>

68、<p>  if(count++)</p><p>  putchar('+');</p><p>  printf("%lfX^%d",d[i].coef,d[i].expn);</p><p><b>  }</b></p><p><b>  }</b&

69、gt;</p><p>  else //升冪打印</p><p><b>  {</b></p><p>  if(choose!=1)</p><p>  printf("沒(méi)有%d選項(xiàng),系統(tǒng)將默認(rèn)輸出升序:\nAm(X)=",choose);</p><p><

70、b>  else</b></p><p>  printf("Am(X)=");</p><p>  for(i=0;i<num;i++)</p><p><b>  {</b></p><p>  if(count++)</p><p>  putch

71、ar('+');</p><p>  printf("%lfX^%d",d[i].coef,d[i].expn);</p><p><b>  }</b></p><p><b>  }</b></p><p>  putchar(10);</p>

72、<p><b>  }</b></p><p>  void printlink2(MPP * p) //打印結(jié)果Bn(x)</p><p><b>  {</b></p><p>  int num=0,i=0,choose,count;</p><p>  puts("

73、請(qǐng)選擇輸出順序:1 升冪 2 降冪:");</p><p>  scanf("%d",&choose);</p><p>  MPP *tp=p;</p><p>  p=p->next;</p><p>  while(p!=NULL)</p><p><b> 

74、 {</b></p><p><b>  num++;</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  MPOL *d=new MPOL[num];</p><p>  p=tp->next

75、;</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  d[i].coef=p->coef;</p><p>  d[i].expn=p->expn;</p><p><b>  i++;</b></

76、p><p>  p=p->next;</p><p><b>  }</b></p><p>  if(choose==2) //降冪打印</p><p><b>  {</b></p><p><b>  count=0;</b></p&g

77、t;<p>  printf("Bn(X)=");</p><p>  for(i=num-1;i>=0;i--)</p><p><b>  {</b></p><p>  if(count++)</p><p>  putchar('+');</p>

78、<p>  printf("%lfX^%d",d[i].coef,d[i].expn);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else //升冪打印</p><p><b>  {<

79、;/b></p><p>  if(choose!=1)</p><p>  printf("沒(méi)有%d選項(xiàng),系統(tǒng)將默認(rèn)輸出升序:\nBn(X)=",choose);</p><p><b>  else</b></p><p>  printf("Bn(X)=");</

80、p><p>  for(i=0;i<num;i++)</p><p><b>  {</b></p><p>  if(count++)</p><p>  putchar('+');</p><p>  printf("%lfX^%d",d[i].coef,

81、d[i].expn);</p><p><b>  }</b></p><p><b>  }</b></p><p>  putchar(10);</p><p><b>  }</b></p><p>  void printlink(MPP * p

82、) //打印結(jié)果M(x)</p><p><b>  {</b></p><p>  int num=0,i=0,choose,count;</p><p>  puts("請(qǐng)選擇輸出順序:1 升冪 2 降冪:");</p><p>  scanf("%d",&cho

83、ose);</p><p>  MPP *tp=p;</p><p>  p=p->next;</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p><b>  num++;</b></p><p&

84、gt;  p=p->next;</p><p><b>  }</b></p><p>  MPOL *d=new MPOL[num];</p><p>  p=tp->next;</p><p>  while(p!=NULL)</p><p><b>  {</b&

85、gt;</p><p>  d[i].coef=p->coef;</p><p>  d[i].expn=p->expn;</p><p><b>  i++;</b></p><p>  p=p->next;</p><p><b>  }</b><

86、/p><p>  if(choose==2) //降冪打印</p><p><b>  {</b></p><p><b>  count=0;</b></p><p>  printf("M(X)=");</p><p>  for(i=num-1;i&

87、gt;=0;i--)</p><p><b>  {</b></p><p>  if(count++)</p><p>  putchar('+');</p><p>  printf("%lfX^%d",d[i].coef,d[i].expn);</p><p&

88、gt;<b>  }</b></p><p><b>  }</b></p><p>  else //升冪打印</p><p><b>  {</b></p><p>  if(choose!=1)</p><p>  printf("

89、沒(méi)有%d選項(xiàng),系統(tǒng)將默認(rèn)輸出升序:\nM(X)=",choose);</p><p><b>  else</b></p><p>  printf("M(X)=");</p><p>  for(i=0;i<num;i++)</p><p><b>  {</b>

90、;</p><p>  if(count++)</p><p>  putchar('+');</p><p>  printf("%lfX^%d",d[i].coef,d[i].expn);</p><p><b>  }</b></p><p><b&

91、gt;  }</b></p><p>  putchar(10);</p><p><b>  }</b></p><p>  void addlink(MPP *p1,MPP *p2,MPP *p3) //動(dòng)態(tài)鏈表相加</p><p><b>  {</b></p>&

92、lt;p>  MPP * p,*head;</p><p>  p=(MPP *)malloc(sizeof(MPP));</p><p>  if(p==NULL)</p><p><b>  exit(0);</b></p><p>  p->coef=INFCO;</p><p>

93、;  p->expn=-INFEX;</p><p>  p->next=NULL;</p><p>  head=p3=p;</p><p>  p1=p1->next;</p><p>  p2=p2->next;</p><p>  while(p1!=NULL||p2!=NULL)<

94、;/p><p><b>  {</b></p><p>  if(fabs(head->coef)>1e-8)</p><p><b>  {</b></p><p>  p=(MPP *)malloc(sizeof(MPP));</p><p>  if(p==NU

95、LL)</p><p><b>  exit(0);</b></p><p>  head->next=p;</p><p><b>  head=p;</b></p><p>  head->next=NULL;</p><p><b>  }<

96、/b></p><p>  if(p1==NULL)</p><p><b>  {</b></p><p>  head->coef=p2->coef;</p><p>  head->expn=p2->expn;</p><p>  p2=p2->next;

97、</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  if(p2==NULL)</p><p><b>  {</b></p><p>  head->coef=p1->coef

98、;</p><p>  head->expn=p1->expn;</p><p>  p1=p1->next;</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  if(p1->expn=

99、=p2->expn)</p><p><b>  {</b></p><p>  head->coef=p1->coef+p2->coef;</p><p>  head->expn=p1->expn;</p><p>  p1=p1->next;</p><

100、p>  p2=p2->next;</p><p><b>  }</b></p><p>  else if(p1->expn<p2->expn)</p><p><b>  {</b></p><p>  head->coef=p1->coef;</

101、p><p>  head->expn=p1->expn;</p><p>  p1=p1->next;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p

102、><p>  head->coef=p2->coef;</p><p>  head->expn=p2->expn;</p><p>  p2=p2->next;</p><p><b>  }</b></p><p><b>  }</b><

103、/p><p>  puts("相加結(jié)果為:");</p><p>  printlink(p3);</p><p><b>  }</b></p><p>  void sublink(MPP *p1,MPP *p2,MPP *p3) //動(dòng)態(tài)鏈表相減</p><p><b

104、>  {</b></p><p>  MPP * p,*head;</p><p>  p=(MPP *)malloc(sizeof(MPP));</p><p>  if(p==NULL)</p><p><b>  exit(0);</b></p><p>  p->c

105、oef=INFCO;</p><p>  p->expn=-INFEX;</p><p>  p->next=NULL;</p><p>  head=p3=p;</p><p>  p1=p1->next;</p><p>  p2=p2->next;</p><p>

106、  while(p1!=NULL||p2!=NULL)</p><p><b>  {</b></p><p>  if(fabs(head->coef)>1e-8)</p><p><b>  {</b></p><p>  p=(MPP *)malloc(sizeof(MPP));&

107、lt;/p><p>  if(p==NULL)</p><p><b>  exit(0);</b></p><p>  head->next=p;</p><p><b>  head=p;</b></p><p>  head->next=NULL;</p&

108、gt;<p><b>  }</b></p><p>  if(p1==NULL)</p><p><b>  {</b></p><p>  head->coef=-p2->coef;</p><p>  head->expn=p2->expn;</p&

109、gt;<p>  p2=p2->next;</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  if(p2==NULL)</p><p><b>  {</b></p><p

110、>  head->coef=p1->coef;</p><p>  head->expn=p1->expn;</p><p>  p1=p1->next;</p><p><b>  continue;</b></p><p><b>  }</b></p&

111、gt;<p>  if(p1->expn==p2->expn)</p><p><b>  {</b></p><p>  head->coef=p1->coef-p2->coef;</p><p>  head->expn=p1->expn;</p><p>  

112、p1=p1->next;</p><p>  p2=p2->next;</p><p><b>  }</b></p><p>  else if(p1->expn<p2->expn)</p><p><b>  {</b></p><p>  

113、head->coef=p1->coef;</p><p>  head->expn=p1->expn;</p><p>  p1=p1->next;</p><p><b>  }</b></p><p><b>  else</b></p><p&

114、gt;<b>  {</b></p><p>  head->coef=-p2->coef;</p><p>  head->expn=p2->expn;</p><p>  p2=p2->next;</p><p><b>  }</b></p><

115、;p><b>  }</b></p><p>  puts("相減結(jié)果為:");</p><p>  printlink(p3);</p><p><b>  }</b></p><p>  void mullink(MPP *p1,MPP *p2,MPP *p3) //動(dòng)

116、態(tài)鏈表相乘</p><p><b>  {</b></p><p>  MPP *p,*head,*d,*tp;</p><p><b>  int i,j;</b></p><p>  p=(MPP *)malloc(sizeof(MPP));</p><p>  if(p

117、==NULL)</p><p><b>  exit(0);</b></p><p>  p->coef=INFCO;</p><p>  p->expn=-INFEX;</p><p>  p->next=NULL;</p><p>  tp=head=p3=p;</p&

118、gt;<p>  p=(MPP *)malloc(sizeof(MPP));</p><p>  if(p==NULL)</p><p><b>  exit(0);</b></p><p>  p->coef=INFCO;</p><p>  p->expn=INFEX;</p>

119、<p>  p->next=NULL;</p><p>  tp->next=p;</p><p>  for(i=0;i<n1;i++)</p><p><b>  {</b></p><p>  p1=p1->next;</p><p><b> 

120、 d=p2;</b></p><p>  for(j=0;j<n2;j++)</p><p><b>  {</b></p><p>  d=d->next;</p><p>  p=(MPP *)malloc(sizeof(MPP));</p><p>  if(p==N

121、ULL)</p><p><b>  exit(0);</b></p><p>  p->next=NULL;</p><p>  p->coef=p1->coef*d->coef;</p><p>  p->expn=p1->expn+d->expn;</p>&

122、lt;p><b>  tp=p3;</b></p><p>  while(tp->next!=NULL)</p><p><b>  {</b></p><p>  if(tp->expn==p->expn)</p><p><b>  {</b>&l

123、t;/p><p>  tp->coef+=p->coef;</p><p><b>  free(p);</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  if(tp->e

124、xpn<p->expn&&tp->next->expn>p->expn)</p><p><b>  {</b></p><p>  p->next=tp->next;</p><p>  tp->next=p;</p><p><b>  

125、break;</b></p><p><b>  }</b></p><p>  tp=tp->next;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

126、/b></p><p><b>  tp=p3;</b></p><p>  while(tp->next!=NULL)</p><p><b>  {</b></p><p>  if(tp->next->expn==INFEX)</p><p>&

127、lt;b>  {</b></p><p>  free(tp->next);</p><p>  tp->next=NULL;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  tp=t

128、p->next;</p><p><b>  }</b></p><p>  puts("相乘結(jié)果為:");</p><p>  printlink(p3);</p><p><b>  }</b></p><p>  void deletelink

129、(MPP *p) //刪除結(jié)點(diǎn)釋放內(nèi)存</p><p><b>  {</b></p><p><b>  MPP *d;</b></p><p>  while(p!=NULL)</p><p><b>  {</b></p><p><

130、b>  d=p;</b></p><p>  p=p->next;</p><p><b>  free(d);</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  int

131、main()</p><p><b>  {</b></p><p>  int i,choose,choose2;</p><p>  puts("輸入第一個(gè)多項(xiàng)式的項(xiàng)數(shù):");</p><p>  scanf("%d",&n1);</p><p>

132、;  cp1=(MPOL *)malloc(n1*sizeof(MPOL));</p><p>  puts("分別輸入各項(xiàng)的系數(shù)和指數(shù):");</p><p>  for(i=0;i<n1;i++)</p><p>  scanf("%lf%d",&cp1[i].coef,&cp1[i].expn);&

133、lt;/p><p>  puts("輸入第二個(gè)多項(xiàng)式的項(xiàng)數(shù):");</p><p>  scanf("%d",&n2);</p><p>  cp2=(MPOL *)malloc(n2*sizeof(MPOL));</p><p>  puts("分別輸入各項(xiàng)的系數(shù)和指數(shù):");

134、</p><p>  for(i=0;i<n2;i++)</p><p>  scanf("%lf%d",&cp2[i].coef,&cp2[i].expn);</p><p>  puts("請(qǐng)選擇實(shí)現(xiàn)結(jié)構(gòu):1 順序結(jié)構(gòu) 2 動(dòng)態(tài)鏈表結(jié)構(gòu)");</p><p>  scanf(&

135、quot;%d",&choose);</p><p>  double *c1,*c2,*c3;</p><p>  MPP *p1=NULL,*p2=NULL,*p3=NULL;</p><p>  switch(choose)</p><p><b>  {</b></p><p

136、><b>  case 1:</b></p><p>  c1=(double *)malloc((cp1[n1-1].expn+1)*sizeof(double));</p><p>  c2=(double *)malloc((cp1[n2-1].expn+1)*sizeof(double));</p><p>  creatpoly

137、1(c1,1);</p><p>  creatpoly1(c2,2);</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  p1=creatlink(p1,n1,1);</p><p>  p2=crea

138、tlink(p2,n2,2);</p><p>  printlink1(p1);</p><p>  printlink2(p2);</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  printf(&

139、quot;沒(méi)有%d選項(xiàng)系統(tǒng)將自動(dòng)調(diào)用默認(rèn)結(jié)構(gòu)(動(dòng)態(tài)鏈表)!\n",choose);</p><p><b>  choose=2;</b></p><p>  p1=creatlink(p1,n1,1);</p><p>  p2=creatlink(p2,n2,2);</p><p><b>  }

140、</b></p><p>  puts("選擇操作方式:1 相加 2 相減 3 相乘");</p><p>  scanf("%d",&choose2);</p><p>  c3=(double*)malloc((cp1[n1-1].expn+cp2[n2-1].expn+2)*sizeof(double

141、));</p><p>  if(choose==1)</p><p><b>  {</b></p><p>  switch(choose2)</p><p><b>  {</b></p><p><b>  case 1:</b></p&

142、gt;<p>  addpoly(c1,c2,c3);</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  subpoly(c1,c2,c3);</p><p><b>  break;</b>

143、</p><p><b>  case 3:</b></p><p>  mulpoly(c1,c2,c3);</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  printf(&q

144、uot;沒(méi)有%d選項(xiàng)系統(tǒng)將自動(dòng)調(diào)用默認(rèn)操作(相加)!\n",choose);</p><p>  addpoly(c1,c2,c3);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b><

145、/p><p><b>  {</b></p><p>  switch(choose2)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  addlink(p1,p2,p3);</p>

146、<p><b>  break;</b></p><p><b>  case 2:</b></p><p>  sublink(p1,p2,p3);</p><p><b>  break;</b></p><p><b>  case 3:</

147、b></p><p>  mullink(p1,p2,p3);</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  printf("沒(méi)有%d選項(xiàng)系統(tǒng)將自動(dòng)調(diào)用默認(rèn)操作(相加)!\n",choose);&

148、lt;/p><p>  choose2=1;</p><p>  addlink(p1,p2,p3);</p><p><b>  }</b></p><p>  deletelink(p1);</p><p>  deletelink(p2);</p><p>  dele

149、telink(p3);</p><p><b>  }</b></p><p>  free(cp1);</p><p>  free(cp2);</p><p>  if(choose!=2)</p><p><b>  {</b></p><p>

150、<b>  free(c1);</b></p><p><b>  free(c2);</b></p><p><b>  free(c3);</b></p><p><b>  }</b></p><p>  system("pause&quo

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論