數(shù)據(jù)結(jié)構(gòu)課程設計 (3)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1 前言1</b></p><p><b>  2 需求分析1</b></p><p>  2.1課程設計目的1</p><p>  2.2課程設計任務1</p><p>

2、;<b>  2.3設計環(huán)境1</b></p><p><b>  3 概要設計1</b></p><p>  3.1數(shù)據(jù)結(jié)構(gòu)設計1</p><p><b>  3.2模塊設計6</b></p><p><b>  4 詳細設計6</b><

3、/p><p><b>  5 測試分析14</b></p><p>  6 課程設計總結(jié)16</p><p><b>  參考文獻17</b></p><p><b>  致謝17</b></p><p><b>  1 前言</b&

4、gt;</p><p>  二叉樹是一種數(shù)據(jù)結(jié)構(gòu),用于保存和處理樹狀的數(shù)據(jù),比如家譜。他的應用極為廣泛,因為根據(jù)數(shù)據(jù)結(jié)構(gòu)的理論,任何復雜的樹夠可以轉(zhuǎn)換為二叉中并進行處理,二叉樹在排序、查找、大規(guī)模數(shù)據(jù)索引方面有很多很多應用,而且二叉樹排序是簡單算法排序中速度最快的。</p><p>  在二叉樹的一些應用中,常常要求在樹中查找具有某種特征的節(jié)點,或者對樹中全部節(jié)點逐一進行某種處理。這就提出

5、了遍歷二叉樹。根據(jù)遍歷的方向的選擇,就有了前序遍歷,中序遍歷和后序遍歷以及層次遍歷二叉樹。因此掌握二叉樹的各種遍歷二叉樹算法非常重要,而且高效的遍歷算法能夠節(jié)省很多成本。</p><p><b>  2 需求分析</b></p><p><b>  2.1課程設計目的</b></p><p>  學生在教師指導下運用所學課

6、程的知識來研究、解決一些具有一定綜合性問題的專業(yè)課題。通過課程設計(論文),提高學生綜合運用所學知識來解決實際問題、使用文獻資料、及進行科學實驗或技術設計的初步能力,為畢業(yè)設計(論文)打基礎。</p><p><b>  2.2課程設計任務</b></p><p><b> ?。ㄒ唬┤蝿?lt;/b></p><p>  二叉樹

7、的中序、前序、后序的遞歸、非遞歸遍歷算法,層次序的非遞歸遍歷算法的實現(xiàn),應包含建樹的實現(xiàn)。 要求:多個測試用例,且畫出其二叉樹。</p><p><b>  2.3設計環(huán)境</b></p><p> ?。?)WINDOWS 2000/2003/XP/7/Vista系統(tǒng)</p><p>  (2)Visual C++或TC集成開發(fā)環(huán)境&l

8、t;/p><p><b>  3 概要設計</b></p><p><b>  3.1數(shù)據(jù)結(jié)構(gòu)設計</b></p><p>  1、二叉樹的抽象數(shù)據(jù)類型定義</p><p>  ADT BinaryTree{</p><p>  數(shù)據(jù)對象D:D是具有相同特性的數(shù)據(jù)元素的集合。&l

9、t;/p><p><b>  數(shù)據(jù)關系R:</b></p><p>  若D=Φ,則R=Φ,稱BinaryTree為空二叉樹;</p><p>  若D≠Φ,則R={H},H是如下二元關系;</p><p> ?。?)在D中存在惟一的稱為根的數(shù)據(jù)元素root,它在關系H下無前驅(qū);</p><p>  

10、(2)若D-{root}≠Φ,則存在D-{root}={D1,Dr},且D1∩Dr =Φ;</p><p> ?。?)若D1≠Φ,則D1中存在惟一的元素x1,<root,x1>∈H,且存在D1上的關系H1 ?H;若Dr≠Φ,則Dr中存在惟一的元素xr,<root,xr>∈H,且存在Dr上的關系Hr ?H;H={<root,x1>,<root,xr>,H1,Hr};&

11、lt;/p><p> ?。?)(D1,{H1})是一棵符合本定義的二叉樹,稱為根的左子樹;(Dr,{Hr})是一棵符合本定義的二叉樹,稱為根的右子樹。</p><p><b>  基本操作:</b></p><p>  InitBiTree( &T )</p><p>  操作結(jié)果:構(gòu)造空二叉樹T。</p>

12、;<p>  Destroy BiTree( &T )</p><p>  初始條件:二叉樹T已存在。</p><p>  操作結(jié)果:銷毀二叉樹T。</p><p>  CreateBiTree( &T, definition )</p><p>  初始條件:definition給出二叉樹T的定義。</p

13、><p>  操作結(jié)果:按definiton構(gòu)造二叉樹T。</p><p>  ClearBiTree( &T )</p><p>  初始條件:二叉樹T存在。</p><p>  操作結(jié)果:將二叉樹T清為空樹。</p><p>  BiTreeEmpty( T )</p><p>  初始

14、條件:二叉樹T存在。</p><p>  操作結(jié)果:若T為空二叉樹,則返回TRUE,否則返回FALSE。</p><p>  BiTreeDepth( T )</p><p>  初始條件:二叉樹T存在。</p><p>  操作結(jié)果:返回T的深度。</p><p><b>  Root( T )</b

15、></p><p>  初始條件:二叉樹T存在。 </p><p>  操作結(jié)果:返回T的根。</p><p>  Value( T, e )</p><p>  初始條件:二叉樹T存在,e是T中某個結(jié)點。</p><p>  操作結(jié)果:返回e的值。</p><p>  Assign(

16、T, &e, value )</p><p>  初始條件:二叉樹T存在,e是T中某個結(jié)點。</p><p>  操作結(jié)果:結(jié)點e賦值為value。</p><p>  Parent( T, e )</p><p>  初始條件:二叉樹T存在,e是T中某個結(jié)點。</p><p>  操作結(jié)果:若e是T的非根結(jié)點

17、,則返回它的雙親,否則返回“空”。</p><p>  LeftChild( T, e )</p><p>  初始條件:二叉樹T存在,e是T中某個結(jié)點。</p><p>  操作結(jié)果:返回e的左孩子。若e無左孩子,則返回“空”。</p><p>  RightChild( T, e )</p><p>  初始條件:

18、二叉樹T存在,e是T中某個結(jié)點。</p><p>  操作結(jié)果:返回e的右孩子。若e無右孩子,則返回“空”。</p><p>  LeftSibling( T, e )</p><p>  初始條件:二叉樹T存在,e是T中某個結(jié)點。</p><p>  操作結(jié)果:返回e的左兄弟。若e是T的左孩子或無左兄弟,則返回“空”。</p>

19、<p>  RightSibling( T, e )</p><p>  初始條件:二叉樹T存在,e是T中某個結(jié)點。</p><p>  操作結(jié)果:返回e的右兄弟。若e是T的右孩子或無右兄弟,則返回“空”。 InsertChild( T, p, LR, c )</p><p>  初始條件:二叉樹T存在,p指向T中某個結(jié)點,LR為0或1,非

20、空二叉樹c與T不相交且右子樹為空。</p><p>  操作結(jié)果:根據(jù)LR為0或1,插入c為T中p所指結(jié)點的左或右子樹。p所指結(jié)點的原有左或右子樹則成為c的右子樹。</p><p>  DeleteChild( T, p, LR )</p><p>  初始條件:二叉樹T存在,p指向T中某個結(jié)點,LR為0或1。</p><p>  操作結(jié)果:

21、根據(jù)LR為0或1,刪除T中p所指結(jié)點的左或右子樹。PreOrderTraverse( T, visit() )</p><p>  初始條件:二叉樹T存在,Visit是對結(jié)點操作的應用函數(shù)。</p><p>  操作結(jié)果:先序遍歷T,對每個結(jié)點調(diào)用函數(shù)Visit一次且僅一次。一旦visit()失敗,則操作失敗。</p><p>  InOrderTraverse(

22、T, visit() )</p><p>  初始條件:二叉樹T存在,Visit是對結(jié)點操作的應用函數(shù)。</p><p>  操作結(jié)果:中序遍歷T,對每個結(jié)點調(diào)用函數(shù)Visit一次且僅一次。一旦visit()失敗,則操作失敗。</p><p>  PostOrderTraverse( T, visit() )</p><p>  初始條件:二

23、叉樹T存在,Visit是對結(jié)點操作的應用函數(shù)。</p><p>  操作結(jié)果:后序遍歷T,對每個結(jié)點調(diào)用函數(shù)Visit一次且僅一次。一旦visit()失敗,則操作失敗。</p><p>  LevelOrderTraverse( T, visit() )</p><p>  初始條件:二叉樹T存在,Visit是對結(jié)點操作的應用函數(shù)。</p><p

24、>  操作結(jié)果:層次遍歷T,對每個結(jié)點調(diào)用函數(shù)Visit一次且僅一次。一旦visit()失敗,則操作失敗。</p><p>  }ADT BinaryTree</p><p>  2 、隊列的抽象數(shù)據(jù)類型定義</p><p>  ADT Queue{</p><p>  數(shù)據(jù)對象:D={ai|ai∈ElemSet, i=1,2, …,n

25、, n≧0}</p><p>  數(shù)據(jù)關系:R1={<ai-1,ai>|ai-1,ai∈D, i=1,2, …,n }</p><p>  約定:a1為隊列頭,an為隊列尾。</p><p><b>  基本操作:</b></p><p>  InitQueue( &q)</p><

26、;p>  操作結(jié)果:構(gòu)造一個空隊列q。</p><p>  DestroyQueue ( &q)</p><p>  初始條件:隊列q已存在。</p><p>  操作結(jié)果:銷毀隊列q。</p><p>  ClearQueue ( &q)</p><p>  初始條件:隊列q已存在。</p

27、><p>  操作結(jié)果:將q清為空隊列。</p><p>  QueueEmpty( q )</p><p>  初始條件:隊列q已存在。</p><p>  操作結(jié)果:若q為空隊列,則返回TRUE,否則返回FALSE。</p><p>  QueueLength(q )</p><p>  初始條

28、件:隊列q已存在。</p><p>  操作結(jié)果:返回q的數(shù)據(jù)元素個數(shù),即隊列的長度。</p><p>  GetHead( q, &e )</p><p>  初始條件:隊列q已存在且非空。</p><p>  操作結(jié)果:用e返回q的隊頭元素。</p><p>  EnQueue( &q, e )&l

29、t;/p><p>  初始條件:隊列q已存在。</p><p>  操作結(jié)果:插入元素e為q的新的隊尾元素。</p><p>  DeQueue( &q, &e )</p><p>  初始條件:隊列q已存在且非空。</p><p>  操作結(jié)果:刪除q的隊頭元素,并用e返回其值。</p>&

30、lt;p>  QueueTraverse(q, visit() )</p><p>  初始條件:隊列q已存在且非空</p><p>  操作結(jié)果:從隊頭到隊尾依次對q的每個數(shù)據(jù)元素調(diào)用函數(shù)visit()。一旦visit()失敗,則操作失敗。</p><p>  3、 棧的抽象數(shù)據(jù)類型定義</p><p>  ADT Stack{&l

31、t;/p><p>  數(shù)據(jù)對象:D={ai|ai∈ElemSet, i=1,2, …,n, n≧0}</p><p>  數(shù)據(jù)關系:R1={<ai-1,ai>|ai-1,ai∈D, i=1,2, …,n }</p><p>  約定:a1為棧底,an為棧頂。</p><p><b>  基本操作:</b><

32、/p><p>  InitStack (s):棧初始化。</p><p>  初始條件:棧s不存在。</p><p>  操作結(jié)果:構(gòu)造一個空棧。</p><p>  StackEmpty(s):判???。</p><p>  初始條件:棧s已存在。</p><p>  操作結(jié)果:若棧s為空棧則返回

33、1,否則返回0。</p><p>  Push(s,e):入棧。</p><p>  初始條件: 棧s已存在。</p><p>  操作結(jié)果:在棧s的頂部插入一個新元素e,e成為新的棧頂元素,棧發(fā)生變化。</p><p>  Pop(s,e):出棧。</p><p>  初始條件:棧s存在且非空。</p>

34、<p>  操作結(jié)果:將棧s的棧頂元素從棧中刪除,并用e返回其值,棧發(fā)生變化。</p><p>  GetTop(s,e):讀棧頂元素。</p><p>  初始條件: 棧s存在且非空。</p><p>  操作結(jié)果:讀棧頂元素并用e返回其值,棧不變化。</p><p><b>  3.2模塊設計</b>&l

35、t;/p><p>  本程序包括七個模塊:</p><p><b> ?。?)主程序模塊</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  初始化;</b></p><

36、p><b>  建立二叉樹;</b></p><p>  遞歸先序遍歷二叉樹并輸出;</p><p>  遞歸中序遍歷二叉樹并輸出;</p><p>  遞歸后序遍歷二叉樹并輸出;</p><p>  非遞歸中序遍歷二叉樹并輸出;</p><p>  層次遍歷二叉樹并輸出;}</p&g

37、t;<p> ?。?)二叉樹建立模塊——建立一個二叉樹并對二叉樹進行初始化</p><p>  (3)遞歸先序遍歷模塊——實現(xiàn)對二叉樹的遞歸先序遍歷并輸出</p><p> ?。?)遞歸中序遍歷模塊——實現(xiàn)對二叉樹的遞歸中序遍歷并輸出</p><p> ?。?)遞歸后序遍歷模塊——實現(xiàn)對二叉樹的遞歸后序遍歷并輸出</p><p>

38、; ?。?)非遞歸中序遍歷模塊——實現(xiàn)對二叉樹的遞歸后序遍歷并輸出</p><p> ?。?)層次遍歷模塊——實現(xiàn)對二叉樹的層次遍歷并輸出</p><p><b>  4 詳細設計</b></p><p>  1、主要模塊的流程圖</p><p>  樹的遍歷實質(zhì)上是將二叉樹的各個結(jié)點轉(zhuǎn)換成為一個線性序列來表示。先序遍歷

39、二叉樹是先訪問根節(jié)點,然后遍歷右子樹,最后遍歷左子樹。中序遍歷二叉樹是先按遍歷右子樹,然后訪問根節(jié)點,最后遍歷左子樹。后序遍歷是先按遍歷左子樹,然后遍歷右子樹,最后訪問根節(jié)點。層次遍歷是從二叉樹的第一層(根節(jié)點)開始,從上至下逐層遍歷,在同一層中,則按從左到右的順序?qū)Y(jié)點逐個訪問。</p><p>  程序系統(tǒng)流程示意圖如圖4.1:</p><p>  圖4.1 程序系統(tǒng)流程示意圖<

40、/p><p><b>  主函數(shù):</b></p><p><b>  main()</b></p><p>  { bitree t,H; </p><p>  t=creatree();</p><p>  printf("\n遞歸先序序列:"

41、);</p><p>  preorder(t);</p><p>  printf("\n遞歸中序序列:");</p><p>  inorder(t);</p><p>  printf("\n遞歸后序序列:");</p><p>  postorder(t);</p&

42、gt;<p>  printf("\n非遞歸中序遍歷序列:");</p><p>  nrinorder(t);</p><p>  printf("\n層次遍歷序列:");</p><p>  levelorder(t);}</p><p><b>  2、數(shù)據(jù)類型的定義<

43、;/b></p><p>  (1)二叉樹的二叉鏈表存儲類型</p><p>  typedef struct node</p><p>  { char data;</p><p>  struct node *lchild,*rchild;</p><p>  } bitnode,*bitree;<

44、;/p><p> ?。?)隊列類型的定義</p><p>  typedef struct</p><p>  {elements 1 elem[N]; /*存放二叉鏈表結(jié)點指針*/</p><p>  int front;int rear;</p><p>  int LEN ;} bitree q[N];</p&

45、gt;<p>  3、主要模塊的算法描述</p><p><b> ?。?)建立二叉樹</b></p><p>  初始化隊列,建立一棵二叉樹</p><p>  /*按完全二叉樹形式輸入各結(jié)點,創(chuàng)建一棵二叉樹*/</p><p>  bitree creatree()</p><p&g

46、t;  { /*隊列初始化*/</p><p>  int front=0,rear=-1;char ch;</p><p>  bitree root,s;</p><p>  printf("請輸入字符并以#結(jié)束\n");</p><p>  ch=getchar();</p><p> 

47、 while (ch!='#')</p><p>  { if (ch!='$')</p><p>  { s=(bitree)malloc(LEN);</p><p>  s->data=ch;</p><p>  s->lchild=s->rchild=NULL;</p&

48、gt;<p><b>  }</b></p><p><b>  else </b></p><p><b>  s=NULL;</b></p><p><b>  rear++;</b></p><p>  q[rear]=s;</p

49、><p>  if (rear==0) root=s;</p><p><b>  else</b></p><p>  { if (s&&q[front])</p><p>  if (rear%2==1) </p><p>  q[front]->lchild=s;&

50、lt;/p><p>  else q[front]->rchild=s;</p><p>  if (rear%2==0) front++; </p><p><b>  }</b></p><p>  ch=getchar(); </p><p>  }return root;</p&

51、gt;<p><b>  }</b></p><p>  二叉樹建立的流程圖如圖4.2:</p><p>  圖 4.2二叉樹的建立</p><p> ?。?)遞歸先序遍歷算法</p><p>  利用文件寫入二叉樹的各個結(jié)點。對二叉樹進行遞歸先序遍歷</p><p>  void

52、preorder(bitree t)</p><p>  { if (t)</p><p><b>  { </b></p><p>  FILE *fp1 = fopen("14.txt", "a");</p><p><b>  if(!fp1)</b

53、></p><p>  {printf("create and open file failed\n");/*打開文件失敗*/}</p><p>  fprintf(fp1,"%c,",t->data); </p><p>  fclose(fp1); </p><p>  printf(&

54、quot;%c ",t->data);</p><p>  preorder(t->lchild);/*先序遍歷左子樹*/</p><p>  preorder(t->rchild);/*先序遍歷右子樹*/ }}</p><p>  二叉樹的中序遍歷的流程圖如圖4.3</p><p>  圖4.3二叉樹的中序遍歷&

55、lt;/p><p> ?。?)遞歸中序遍歷算法</p><p>  void inorder(bitree t)</p><p>  { bitree p,s[N];int top=-1;p=t;</p><p>  while(p||top!=-1)</p><p>  { if (p)</p>&

56、lt;p>  { s[++top]=p;p=p->lchild; /*左孩子入棧*/}</p><p><b>  else</b></p><p>  { p=s[top--];/*退棧*/</p><p>  FILE *fp1 = fopen("12.txt", "a+");

57、</p><p><b>  if(!fp1)</b></p><p>  { printf("create and open file failed\n");/*打開文件失敗*/}</p><p>  fprintf(fp1,"%c,",p->data); /*打開文件讀入結(jié)點*/</p&g

58、t;<p>  fclose(fp1); </p><p>  printf("%c ",p->data);</p><p>  p=p->rchild;</p><p><b>  }}}</b></p><p><b>  (4)后序遍歷算法</b>

59、</p><p>  void postorder(bitree t)</p><p>  { if (t) </p><p><b>  { </b></p><p>  postorder(t->lchild); /*后序遍歷左子樹*/ </p><p> 

60、 postorder(t->rchild); /*后序遍歷右子樹*/</p><p>  FILE *fp1 = fopen("13.txt", "a+");</p><p><b>  if(!fp1)</b></p><p><b>  {</b></p>&

61、lt;p>  printf("create and open file failed\n");/*打開文件失敗*/</p><p><b>  }</b></p><p>  fprintf(fp1,"%c,",t->data); </p><p>  fclose(fp1); printf(

62、"%c ",t->data);</p><p><b>  }}</b></p><p>  (5)非遞歸中序遍歷二叉樹</p><p>  /*利用棧對二叉樹進行遍歷*/</p><p>  void nrinorder(bitree t)</p><p><b&

63、gt;  {</b></p><p>  bitree stack[N],p;</p><p><b>  int top;</b></p><p>  if(t==NULL) return;</p><p><b>  top=0;</b></p><p>&l

64、t;b>  p=t;</b></p><p>  while(!(p==NULL&&top==0))</p><p>  {while(p!=NULL)</p><p>  {if(top<N-1)</p><p>  {stack[top]=p;</p><p><b&g

65、t;  top++;}</b></p><p>  else{printf("棧溢出");</p><p><b>  return;}</b></p><p>  p=p->lchild;}</p><p>  if(top<=0) return;</p>&l

66、t;p>  else{top--;</p><p>  p=stack[top];</p><p>  printf("%c",p->data); </p><p>  p=p->rchild;</p><p><b>  }}}</b></p><p>&l

67、t;b>  (6)層次遍歷算法</b></p><p>  /*利用隊列對二叉樹進行遍歷*/</p><p>  void levelorder(bitree t)</p><p><b>  {</b></p><p>  int front=0,rear=-1;</p><p&g

68、t;  if(t==NULL) return;</p><p>  q[++rear]=t;</p><p>  while(front<=rear)</p><p>  {printf("%c ",q[front]->data);</p><p>  if(q[front]->lchild!=NULL)

69、</p><p>  q[++rear]=q[front]->lchild;</p><p>  if (q[front]->rchild!=NULL)</p><p>  q[++rear]=q[front]->rchild; front++;}}</p><p><b>  5 測試分析</b>

70、</p><p>  (1)輸入二叉樹結(jié)點為abc$de$$$fj$h#。</p><p>  結(jié)果輸出如圖5.1:</p><p>  圖5.1程序輸出結(jié)果</p><p>  測試結(jié)果分析如圖5.2:</p><p>  圖5.2測試分析結(jié)果</p><p>  (2)輸入二叉樹的結(jié)點 as

71、dflkijh#。</p><p><b>  輸出結(jié)果如圖5.3</b></p><p><b>  圖5.3輸出結(jié)果</b></p><p><b>  6 課程設計總結(jié)</b></p><p>  課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實

72、踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新日異,當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握計算機開發(fā)技術是十分重要的。</p><p>  開始的時候真的感覺編程是一件很無聊的事情,不過當一個程序運行成功的時候那種喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的努力,終于把程序完成了,盡管程序還是有很多錯誤和漏洞,不過還是很高興的。無論

73、如何是自己的勞動成果,是自己經(jīng)過努力得到的成績。</p><p>  在這次課程設計中我看到了自己編程的很多不足之處,例如,在程序設計過程中,我經(jīng)常沒有申請內(nèi)存就開始使用,造成了很大的錯誤。在一塊內(nèi)存使用完了之后沒有及時釋放其內(nèi)存,雖然在這里沒有出現(xiàn)什么錯誤,但是為以后寫其他程序造成了隱患。當然,在程序中,我使用模板為各種數(shù)據(jù)類型都可以操作,提供了很大方便。在輸入時,采用用戶自定義空標記,方便數(shù)據(jù)的快速輸入。在遞

74、歸算法中,用一個無參數(shù)的函數(shù)調(diào)用有參數(shù)的函數(shù),更加方便更加合理。</p><p>  通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第二次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,

75、對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。</p><p>  在這次二叉樹遍歷算法的設計中,不僅讓我更加理解了二叉樹的特點,更加讓我鍛煉了C語言的程序設計能力,并學到了一些常用的程序設計技巧,深刻明白了程序的可讀性和健壯性的重大作用。</p><p><b>  參考文獻</b></p><p>  [1] 黃同成,黃俊民,董建寅.數(shù)

76、據(jù)結(jié)構(gòu)[M].北京:中國電力出版社,2008</p><p>  [2] 董建寅,黃俊民,黃同成.數(shù)據(jù)結(jié)構(gòu)實驗指導與題解[M].北京:中國電力出版社,2008</p><p>  [3] 嚴蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語言版)[M]. 北京:清華大學出版社,2002</p><p>  [4] 劉振鵬,張曉莉,郝杰.數(shù)據(jù)結(jié)構(gòu)[M].北京:中國鐵道出版社,2003&l

77、t;/p><p>  [5] QQ群,《我愛編程(VC++&C#)》</p><p>  [6] www.baidu.com. 百度</p><p><b>  致謝</b></p><p>  在這次課程設計中,時光如馬駒匆匆的流過,給我?guī)淼挠懈侍鹨灿锌酀?。期間我也得到了許多人的幫助,回首一路,心里充滿感激之情。

78、</p><p>  首先,我要感謝的是我的指導老師。因為我們沒有選老師的題目,而選的其他題目。是柳老師先對我們的課題以及程序進行肯定,然后我們才有機會做自己的課題。在指導中,老師嚴謹?shù)闹螌W態(tài)度、豐富淵博的知識、敏銳的學術思維、精益求精的工作態(tài)度以及侮人不倦的師者風范是我終生學習的楷模,老師的高深精湛的造詣與嚴謹求實的治學精神,將永遠激勵著我。</p><p>  其次,我還要感謝一直在我

79、身邊的同學對我的無私幫助,正因為有了她我才能得以順利完成論文。因為我們是我們兩個人一起完成此次課程設計的論文。同時實驗室的老師也時常幫助我,在此我也衷心的感謝他們。很感謝這次的課程設計,它使我更加深刻地體會到多看專業(yè)書的重要性,只有掌握了一定量的專業(yè)知識才能得心應手地解決諸多問題。另外,做任何事都要有耐心,不要一遇到困難就退縮。在學習和工作中要時刻謹記“團結(jié)”二字,它好比通向成功的鋪路石,不可或缺。通過本次“二叉樹的排序問題”課題的撰寫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論