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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  數(shù) 據(jù) 結(jié) 構(gòu) 課 程 設(shè) 計(jì)</p><p>  設(shè)計(jì)題目:基于三元組表的存儲結(jié)構(gòu)實(shí)現(xiàn)稀疏矩陣的應(yīng)用</p><p>  學(xué)生姓名: </p><p>  專業(yè)班級: </p><p>  指導(dǎo)教師:

2、 </p><p>  完成時(shí)間: </p><p><b>  目 錄</b></p><p>  一、課題設(shè)計(jì)目的及意義1</p><p>  1.1、課題設(shè)計(jì)目的1</p><p>  1.2、課程設(shè)計(jì)意義

3、1</p><p><b>  二、需求分析1</b></p><p>  2.1設(shè)計(jì)函數(shù)建立稀疏矩陣及初始化值和輸出稀疏矩陣的值1</p><p>  2.2 構(gòu)造函數(shù)進(jìn)行稀疏矩陣的轉(zhuǎn)置并輸出結(jié)果1</p><p>  2.3 構(gòu)造函數(shù)進(jìn)行兩稀疏矩陣相加、減及相乘并輸出最終稀疏矩陣1</p>&

4、lt;p>  2.4 退出系統(tǒng)2</p><p><b>  三、項(xiàng)目設(shè)計(jì)2</b></p><p><b>  3.1結(jié)構(gòu)設(shè)計(jì)2</b></p><p><b>  3.2算法思想2</b></p><p><b>  3.3模塊圖2</b&g

5、t;</p><p><b>  3.4流程圖3</b></p><p><b>  四、系統(tǒng)實(shí)現(xiàn)4</b></p><p><b>  4.1主調(diào)函數(shù)4</b></p><p>  4.2三元組表建立4</p><p><b>  4

6、.3矩陣建立4</b></p><p>  4.4矩陣相加減及轉(zhuǎn)置5</p><p><b>  五、系統(tǒng)調(diào)試8</b></p><p>  5.1主菜單輸出8</p><p><b>  5.2矩陣相加9</b></p><p><b>  

7、5.3矩陣轉(zhuǎn)置9</b></p><p>  5.4矩陣相減10</p><p><b>  六、實(shí)驗(yàn)總結(jié)10</b></p><p><b>  七、附錄11</b></p><p>  一、課題設(shè)計(jì)目的及意義</p><p>  1.1、課題設(shè)計(jì)目的

8、</p><p>  (1)掌握稀疏矩陣三元組表的存儲,創(chuàng)建,顯示,轉(zhuǎn)置等方法。</p><p>  (2)利用三元組表實(shí)現(xiàn)矩陣的相加,減。 </p><p>  (3)了解稀疏矩陣的相關(guān)應(yīng)用。</p><p>  1.2、課程設(shè)計(jì)意義</p><p>  本次課題設(shè)計(jì)可以使我們更熟練的掌握有關(guān)三元組表及稀疏矩

9、陣的相關(guān)知識,比一般存儲方法節(jié)省了存儲空間,基于三元組表的存儲結(jié)構(gòu)實(shí)現(xiàn)了稀疏矩陣的基本操作。</p><p>  本次課程設(shè)計(jì)是本組成員共同努力而完成的,第一次進(jìn)行課程設(shè)計(jì)是我們的探索過程,這個(gè)過程中,我們克服了一個(gè)個(gè)困難,在摸索中前行,我們相信通過此次課程設(shè)計(jì)我們每個(gè)人都會對數(shù)據(jù)結(jié)構(gòu)這門課程有更深一步的了解。</p><p><b>  二、需求分析</b><

10、/p><p>  稀疏矩陣是指那些多數(shù)元素為零的矩陣。利用“稀疏”特點(diǎn)進(jìn)行存儲和計(jì)算可以大大節(jié)省存儲空間,提高計(jì)算效率。實(shí)現(xiàn)一個(gè)能進(jìn)行稀疏矩陣基本運(yùn)算的運(yùn)算器。以“帶行邏輯鏈接信息”的三元組順序表表示稀疏矩陣,實(shí)現(xiàn)兩個(gè)矩陣相加、相減和相乘的運(yùn)算。稀疏矩陣的輸入形式采用三元組表示,而運(yùn)算結(jié)果的矩陣則通常以陣列形式列出。</p><p>  2.1設(shè)計(jì)函數(shù)建立稀疏矩陣及初始化值和輸出稀疏矩陣的值&

11、lt;/p><p>  本模塊要求設(shè)計(jì)函數(shù)建立稀疏矩陣并初始化,包括在三元組結(jié)構(gòu)下和十字鏈表結(jié)構(gòu)下。在創(chuàng)建稀疏矩陣時(shí),需要設(shè)計(jì)兩個(gè)不同的函數(shù)分別在三元組和十字鏈表下創(chuàng)建稀疏矩陣,在輸入出現(xiàn)錯(cuò)誤時(shí),能夠?qū)﹀e(cuò)誤進(jìn)行判別處理,初始化稀疏矩陣都為空值。在設(shè)計(jì)輸出稀疏矩陣的值的函數(shù)時(shí),也要針對兩種不同的情況,分別編制函數(shù),才能準(zhǔn)確的輸出稀疏矩陣。在對稀疏矩陣進(jìn)行初始化時(shí),只輸入非零元素的值和它所在的所在行及所在列。在對稀疏矩陣

12、輸出時(shí),以矩陣的完整形式輸出。</p><p>  2.2 構(gòu)造函數(shù)進(jìn)行稀疏矩陣的轉(zhuǎn)置并輸出結(jié)果 </p><p>  本模塊要求設(shè)計(jì)函數(shù)進(jìn)行稀疏矩陣的轉(zhuǎn)置并輸出轉(zhuǎn)置后的結(jié)果。在編寫函數(shù)時(shí),要先定義一個(gè)相應(yīng)的結(jié)構(gòu)體變量用于存放轉(zhuǎn)置后的矩陣,最后把此矩陣輸出。 </p><p>  2.3 構(gòu)造函數(shù)進(jìn)行兩稀疏矩陣相加、減及相乘并輸出最終稀疏矩陣</p>

13、<p>  本模塊要求設(shè)計(jì)相加、減和相乘函數(shù)對兩個(gè)矩陣進(jìn)行運(yùn)算,并輸出最終的稀疏矩陣,定義相應(yīng)的矩陣類型用于存放兩個(gè)矩陣操作后的結(jié)果矩陣,這個(gè)結(jié)果矩陣的行、列數(shù)需要綜合多方面情況來確定。這些函數(shù)也是整個(gè)程序的難點(diǎn),需要靈活運(yùn)用數(shù)組及指針的特點(diǎn)。</p><p><b>  2.4 退出系統(tǒng) </b></p><p>  本模塊要求設(shè)置選項(xiàng)能隨時(shí)結(jié)束程序的運(yùn)行

14、,本程序中采用do-while循環(huán)。程序在計(jì)算機(jī)上顯示“提示信息”之后,由用戶在鍵盤上輸入演示程序中需要的相關(guān)信息及命令。 </p><p><b>  三、項(xiàng)目設(shè)計(jì)</b></p><p><b>  3.1結(jié)構(gòu)設(shè)計(jì)</b></p><p>  1、以“帶行邏輯鏈接信息”的三元組順序表表示稀疏矩陣,實(shí)現(xiàn)兩個(gè)矩陣相加、相減

15、和相乘的運(yùn)算</p><p>  2、稀疏矩陣的輸入形式采用三元組表示,而運(yùn)算結(jié)果的矩陣則通常以陣列形式列出。</p><p><b>  3.2算法思想</b></p><p>  1、首先應(yīng)輸入矩陣的行數(shù)和列數(shù)。</p><p>  2、 以“帶行邏輯鏈接信息”的三元組順序表表數(shù),并判別給出的兩個(gè)矩陣的行、列數(shù)對于所

16、要求作的運(yùn)算是否相匹配??稍O(shè)矩陣的行數(shù)和列數(shù)均不超過20。</p><p>  3、程序可以對三元組的輸入順序加以限制,例如,按行優(yōu)先。注意研究教材的算法,以便提高計(jì)算效率。5.在用三元組表示稀疏矩陣時(shí),相加或相減所得結(jié)果矩陣應(yīng)該另生成,乘積矩陣也可用二維數(shù)組存放。</p><p>  4、主函數(shù)設(shè)置循環(huán)和選擇語句進(jìn)行運(yùn)算循環(huán)和選擇,進(jìn)行稀疏矩陣的加法,減法和轉(zhuǎn)置。</p>

17、<p><b>  3.3模塊圖</b></p><p><b>  3.4流程圖</b></p><p><b>  四、系統(tǒng)實(shí)現(xiàn)</b></p><p><b>  4.1主調(diào)函數(shù)</b></p><p>  #include<stdi

18、o.h></p><p>  #define smax 16</p><p>  typedef int datatype;</p><p>  typedef struct</p><p>  { int i, j;</p><p>  datatype v;</p><p>&l

19、t;b>  } node;</b></p><p>  typedef struct()</p><p>  { int m ,n,t;</p><p>  node data[smax];</p><p>  }spmatrix;</p><p><b>  4.2三元組表建立</

20、b></p><p>  void print(spmatrix *a)</p><p><b>  {</b></p><p><b>  int k;</b></p><p>  for(k=0;k<a->t;k++)</p><p>  printf(

21、"%d\t%d\t%d\n",a->data[k].i,a->data[k].j,a->data[k].v);</p><p><b>  }</b></p><p><b>  4.3矩陣建立</b></p><p>  void printjuzhen(spmatrix *a)&l

22、t;/p><p><b>  {</b></p><p>  int k,p,l;</p><p>  int c[5][5]={{0},{0},{0},{0},{0}};</p><p>  for(k=0;k<a->t;k++)</p><p>  c[a->data[k].i]

23、[a->data[k].j]=a->data[k].v;</p><p>  for(p=0;p<a->m;p++)</p><p>  {for(l=0;l<a->n;l++)</p><p>  printf("%d\t",c[p][l]);</p><p>  printf(&qu

24、ot;\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.4矩陣相加減及轉(zhuǎn)置</p><p>  pmatrix * xiangjia(spmatrix *a,spmatrix *b)</p><p>

25、<b>  {</b></p><p>  spmatrix *c;</p><p>  int pa=0,pb=0,pc=0,sum=0;</p><p>  c=(spmatrix *)malloc(sizeof(spmatrix));</p><p>  if((a->m==b->m)&&

26、;(a->n==b->n))</p><p><b>  {</b></p><p>  c->m=a->m;</p><p>  c->n=a->n;</p><p>  while(pa<a->t&&pb<b->t)</p>&

27、lt;p><b>  {</b></p><p>  if(a->data[pa].i==b->data[pb].i)</p><p><b>  {</b></p><p>  if(a->data[pa].j==b->data[pb].j)</p><p><

28、b>  {</b></p><p>  sum=a->data[pa].v+b->data[pb].v;</p><p><b>  if(sum)</b></p><p><b>  {</b></p><p>  c->data[pc].v=sum;</

29、p><p>  c->data[pc].i=a->data[pa].i;</p><p>  c->data[pc].j=a->data[pa].j;</p><p><b>  pc++;</b></p><p><b>  }</b></p><p>

30、<b>  pa++;</b></p><p><b>  pb++;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><

31、;p>  if(a->data[pa].j<b->data[pb].j)</p><p><b>  {</b></p><p>  if(a->data[pa].v)</p><p><b>  {</b></p><p>  c->data[pc].v=a-&

32、gt;data[pa].v;</p><p>  c->data[pc].i=a->data[pa].i;</p><p>  c->data[pc].j=a->data[pa].j;</p><p>  pc++;pa++;</p><p><b>  }</b></p><

33、p><b>  }</b></p><p><b>  else</b></p><p>  if(b->data[pb].v)</p><p><b>  {</b></p><p>  c->data[pc].v=b->data[pb].v;<

34、/p><p>  c->data[pc].i=b->data[pb].i;</p><p>  c->data[pc].j=b->data[pb].j;</p><p>  pc++;pb++;</p><p><b>  }</b></p><p><b>  }&

35、lt;/b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if(a->data[pa].i<b->data[pb].i)</p><

36、p><b>  {</b></p><p>  if(a->data[pa].v)</p><p><b>  {</b></p><p>  c->data[pc].v=a->data[pa].v;</p><p>  c->data[pc].i=a->data

37、[pa].i;</p><p>  c->data[pc].j=a->data[pa].j;</p><p>  pc++;pa++;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else&

38、lt;/b></p><p>  if(b->data[pb].v)</p><p><b>  {</b></p><p>  c->data[pc].v=b->data[pb].v;</p><p>  c->data[pc].i=b->data[pb].i;</p>

39、<p>  c->data[pc].j=b->data[pb].j;</p><p>  pc++;pb++;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

40、<p><b>  }</b></p><p><b>  else</b></p><p>  return(0);</p><p>  while(pa<a->t)</p><p><b>  {</b></p><p>  c

41、->data[pc].v=a->data[pa].v;</p><p>  c->data[pc].i=a->data[pa].i;</p><p>  c->data[pc].j=a->data[pa].j;</p><p>  pc++;pa++;</p><p><b>  }</b&

42、gt;</p><p>  while(pb<b->t)</p><p><b>  {</b></p><p>  c->data[pc].v=b->data[pb].v;</p><p>  c->data[pc].i=b->data[pb].i;</p><p

43、>  c->data[pc].j=b->data[pb].j;</p><p>  pc++;pb++;</p><p><b>  }</b></p><p><b>  c->t=pc;</b></p><p>  return(c);</p><p&

44、gt;<b>  五、系統(tǒng)調(diào)試</b></p><p><b>  5.1主菜單輸出</b></p><p><b>  圖1主菜單輸出</b></p><p><b>  5.2矩陣相加</b></p><p><b>  圖2 矩陣相加&l

45、t;/b></p><p><b>  5.3矩陣轉(zhuǎn)置</b></p><p><b>  圖3 矩陣轉(zhuǎn)置</b></p><p><b>  5.4矩陣相減</b></p><p><b>  圖4矩陣相減</b></p><

46、p><b>  六、實(shí)驗(yàn)總結(jié)</b></p><p>  稀疏矩陣這個(gè)課題在我們平時(shí)上課時(shí)我就感覺對于我而言這是比較困難的,矩陣的相關(guān)知識,三元組表的相關(guān)知識也一直讓我比較惶恐,從拿到這個(gè)課題開始我就知道這次的課程設(shè)計(jì)必須用盡全力去認(rèn)真對待。我深知團(tuán)隊(duì)合作的必要性,五個(gè)人的智慧總好過自己一個(gè)閉門造車,所以在課程設(shè)計(jì)過程中我們組進(jìn)行了激烈地討論,齊心協(xié)力地把這次課程設(shè)計(jì)做好。首先,我們根

47、據(jù)課程設(shè)計(jì)所圍繞的程序進(jìn)行編程以及調(diào)試;其次,根據(jù)課程設(shè)計(jì)的要求進(jìn)行實(shí)驗(yàn)?zāi)康囊约皩?shí)驗(yàn)意義的分析;再次之,進(jìn)行需求分析的解決;然后將項(xiàng)目設(shè)計(jì)的算法思想,基本算法,主函數(shù)調(diào)用一一呈現(xiàn)出來。這是我們第一次進(jìn)行比較專業(yè)的關(guān)于課程設(shè)計(jì)方面的運(yùn)算,關(guān)于三元組表以及稀疏函數(shù)的相關(guān)應(yīng)用,課程設(shè)計(jì)過程中,我在利用三元組表實(shí)現(xiàn)稀疏矩陣相加的程序編制中,出現(xiàn)了很多問題,導(dǎo)致最后編譯、執(zhí)行、鏈接時(shí)不能成功,后來我查找了資料,去圖書館借了相關(guān)書籍,詢問老師及本組

48、同學(xué),經(jīng)過了好多次的改進(jìn),最后,終于完成了程序的編制。 通過一周的課程設(shè)計(jì)使我對數(shù)據(jù)結(jié)構(gòu)有了更深的理解,對以前學(xué)習(xí)中不明白的,不理解的都有了進(jìn)一步的理解。在實(shí)際操作中遇到了很多困難,但通過找資料,請教同學(xué)和老師,使我的動手能力和溝</p><p><b>  七、附錄</b></p><p><b>  參考文獻(xiàn)</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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論