版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目 錄</b></p><p> 第一章 需求分析1</p><p> 1.1課程設計題目1</p><p> 1.2 課程設計任務及要求1</p><p> 1.21 課程設計目的1</p><p> 1.22 設計要求1</p&g
2、t;<p> 1.3課程設計思想2</p><p> 1.4 軟件運行環(huán)境及開發(fā)工具2</p><p> 第二章概要設計3</p><p> 2.1 數(shù)據(jù)結構3</p><p> 2.2 所用方法及其原理說明3</p><p> 第三章 詳細設計4</p><
3、;p> 3.1 詳細設計方案4</p><p> 3.2 模塊設計4</p><p> 3.21 二叉樹定義4</p><p> 3.22 樹狀顯示二叉樹設計7</p><p> 3.22 主函數(shù)設計10</p><p> 第四章 調試和操作說明11</p><p&g
4、t;<b> 4.1 調試11</b></p><p> 4.2 操作說明12</p><p> 第五章 總結與體會12</p><p> 5.1 本文的主要工作12</p><p> 5.2 存在問題12</p><p> 5.3 心得體會12</p>&
5、lt;p><b> 致 謝13</b></p><p><b> 參考文獻14</b></p><p> 第一章 需求分析</p><p><b> 1.1課程設計題目</b></p><p> 樹狀顯示二叉樹:編寫函數(shù)displaytree(二叉樹
6、的根指針,數(shù)據(jù)值寬度,屏幕的寬度)輸出樹的直觀示意圖。輸出的二叉樹是垂直打印的,同層的節(jié)點在同一行上。[問題描述] 假設數(shù)據(jù)寬度datawidth=2,而屏幕寬度screenwidth為64=26,假設節(jié)點的輸出位置用(層號,須打印的空格數(shù))來界定。第0層:根在(0,32)處輸出;第1層:因為根節(jié)點縮進了32個空格,所以下一層的偏移量(offset)為32/2=16=screenwidth/22。即第一層的兩個節(jié)點的位
7、置為(1,32-offset),(1,32+offset)即(1,16),(1,48)。第二層:第二層的偏移量offset為screenwidth/23。第二層的四個節(jié)點的位置 分別是(2,16-offset),(2,16+offset),(2,48-offset),(2,48+offset)即(2,8),(2,24),(2,40),(2,56)。……第i層:第i層的偏移量offset為screenwidth/2i+1。第i層
8、的每個節(jié)點的位置是訪問第i-1層其雙親節(jié)點時確定的。假設其雙親的</p><p> 1.2 課程設計任務及要求</p><p> 1.21 課程設計目的</p><p> 據(jù)結構是計算機專業(yè)的核心課程,是一門實踐性很強的課程。課程設計是加強學生實踐能力的一個強有力手段,要求學生掌握數(shù)據(jù)結構的應用、算法的編寫、類C語言的算法轉換成C(C++)程序并上機調試的基本
9、方法,還要求學生在完成程序設計的同時能夠寫出比較規(guī)范的設計報告。嚴格實施課程設計這一環(huán)節(jié),對于學生基本程序設計素養(yǎng)的培養(yǎng)和軟件工作者工作作風的訓練,將起到顯著的促進作用。</p><p><b> 1.22 設計要求</b></p><p> 1、課程設計題目每組一題,每個學生必須獨立完成;</p><p> 2、課程設計時間為2周;&l
10、t;/p><p> 3、設計語言C(C++)不限;</p><p><b> 4、上機任務</b></p><p> 1)選擇合適的數(shù)據(jù)結構,并定義數(shù)據(jù)結構的結構體;</p><p> 2)根據(jù)程序所要完成的基本要求,設計出完整的算法;</p><p> 3)設計出主程序(main函數(shù)),使
11、其成為完整的程序。 </p><p> 6、上機時間:按照實驗室上機時間安排計劃執(zhí)行 </p><p> 7、無論在校外、校內,都要嚴格遵守學校和所在單位的學習和勞動紀律、規(guī)章制度,學生有事離校必須請假。課程設計期間,無故缺席按曠課處理;缺席時間達四分之一以上者,其成績按不及格處理。</p><p><b> 1.3課程設計思想</b>&
12、lt;/p><p> 二叉樹是一種樹形結構,它的特點是每個結點至多有兩棵子樹,即二叉樹中不存在度大于2的結點,并且二叉樹的子樹有左右之分,其次序不能任意顛倒。</p><p> 本設計主要根據(jù)二叉樹的性質原理為設計的主體思路,二叉樹的性質如下:</p><p> 性質1:在二叉樹的第i層上至多有2i-1個結點(i>=1);</p><p&
13、gt; 性質2:深度為K的二叉樹至多有2k-1個結點(K>=1);</p><p> 性質3:如果一棵有n各結點的完全二叉樹的結點按層次編號,則對任一結點i(1<=i<=n),有:</p><p> ?。?)若2i>n,則結點無左孩子,否則其左孩子是結點2i;</p><p> ?。?)若2i+1>n,則結點i無右孩子,否則其右孩子
14、為2i+1;</p><p> 另外,本設計利用二叉樹的廣度優(yōu)先搜索算法實現(xiàn)。利用兩個隊列Q,QI。隊列Q中存放節(jié)點信息,隊列QI中存相應于隊列Q中的節(jié)點的位置信息,包括層號和需要打印節(jié)點值時需要打印的空格數(shù)。當節(jié)點被加入到Q時,相應的打印信息被存到QI中。二叉樹本身采用二叉鏈表存儲。本設計應用了C語言中的類來自定義頭文件,將任務分成多個的模塊,增強了可讀性和簡單性,同時為日后的編寫,調試,維護提供了極大地方便
15、。</p><p> 1.4 軟件運行環(huán)境及開發(fā)工具</p><p> 本設計用到的軟件是Microsoft Visual C++ 6.0程序開發(fā)軟件,Microsoft Visual C++ 6.0是20世紀90年代中期由美國微軟公司推出的一個強大的Windows應用程序開發(fā)平臺,是“真正的程序員”首選的開發(fā)工具之一,也是有志于程序設計的程序員、大中專院校學生進入高級程序設計領域的首
16、選軟件之一。</p><p> Microsoft Visual C++ 6.0程序開發(fā)軟件提供了一個可視化集成編程環(huán)境,能自動生成Windows應用程序的共有部分,幫助程序設計人員直接切入實際功能部分的代碼編制主題,從而大大簡化了復雜的Windows應用程序開發(fā)過程,極大的提高了程序設計的效率,其次, VC++功能強大,內容浩瀚在該環(huán)境下用戶可以開發(fā)有關C和C++的各種應用程序,應用程序的開發(fā)包括建立、編輯、
17、瀏覽、鏈接和調試等操作。</p><p><b> 第二章概要設計</b></p><p><b> 2.1 數(shù)據(jù)結構</b></p><p> 樹狀顯示二叉樹是二叉樹的一種自然顯示方法,本設計結果將二叉樹形象的顯示在屏幕上,直觀易懂。因此本設計將對樹狀顯示二叉樹的設計步驟進行詳細說明。</p>&
18、lt;p> 首先得構造一個數(shù)組來存儲整個二叉樹的結點信息,建立兩個隊列Q和QI,隊列Q中存放節(jié)點信息,隊列QI中存相應于隊列Q中的節(jié)點的位置信息,包括層號和需要打印節(jié)點值時需要打印的空格數(shù)。當節(jié)點被加入到Q時,相應的打印信息被存到QI中。然后通過插入排序算法來構造一個二叉樹,并用二叉樹的層次遍歷來使二叉樹有順序的存入隊列Q,最后通過隊列QI使得二叉樹樹狀的顯示在屏幕上。</p><p> 該程序的主要流
19、程圖如圖2-1所示。</p><p> 2.2 所用方法及其原理說明</p><p> 本設計主要運用了樹的廣度優(yōu)先搜索和隊列的先進先出的特點,樹的廣度優(yōu)先搜索功能如下:</p><p> 假設從圖中某頂點v出發(fā),在訪問了v的各個未曾訪問過的鄰接點,然后分別從這些鄰接點出發(fā)依次訪問它們的鄰接點,并使“先被訪問的頂點的鄰接點”先于“后被訪問的頂點的鄰接點”被訪問
20、,直至圖中所有已被訪問的頂點的鄰接點都被訪問到。若此時圖中尚有頂點未被訪問,則另選圖中一個未曾被訪問的頂點作起始點,重復上述過程,直至圖中所有頂點都被訪問到為止。</p><p> 隊列是一種先進先出的線性表,它只允許在表的一端進行插入,而在另一端刪除元素。在隊列中允許插入的一端叫隊尾,允許刪除的一端叫對頭。隊列的示意圖如下:</p><p> 圖1 二叉樹示意圖</p>
21、<p><b> 第三章 詳細設計</b></p><p> 3.1 詳細設計方案</p><p> 本設計利用兩個隊列Q,QI,隊列Q中存放結點信息,隊列QI中存相應于隊列Q中的節(jié)點的位置信息,包括層號和需要打印節(jié)點值時需要打印的空格數(shù)。當節(jié)點被加入到Q時,相應的打印信息被存到QI中。用二叉樹(二叉樹本身采用二叉鏈表存儲)的層次遍歷算法實現(xiàn)了二叉
22、樹的樹狀顯示。本設計應用了C語言中的類來自定義頭文件,將任務分成多個的模塊,增強了可讀性和簡單性,同時為日后的編寫,調試,維護提供了極大地方便。</p><p><b> 3.2 模塊設計</b></p><p> 本程序包括三部分,即二叉樹定義部分(MyHeap.h),樹狀顯示二叉樹的實現(xiàn)(MyHeap.cpp)部分以及最重要的主函數(shù)部分(main.cpp)。下
23、面將對各模塊設計思想及設計方法進行詳細的說明。</p><p> 3.21 二叉樹定義</p><p> 需要顯示的二叉樹的示意圖如下:</p><p><b> 圖2 樹狀二叉樹</b></p><p> #include <stdio.h></p><p> #incl
24、ude <stdlib.h></p><p> #include <malloc.h></p><p> #define TElemType char</p><p> #define OK 1</p><p> #define ERROR 0</p><p> #define
25、OVERFLOW -2</p><p> #define TRUE 1</p><p> #define FALSE 0</p><p> typedef int Status ; </p><p> #define MAXQSIZE 100 </p><p> typedef struct BiNo
26、de</p><p><b> {</b></p><p> int data;</p><p> struct BiNode *lchild;</p><p> struct BiNode *rchild;</p><p> }BiNode, *BiTree;</p>
27、<p> typedef int ElemType;</p><p> typedef struct</p><p><b> { </b></p><p> ElemType *base; /*數(shù)組首地址*/</p><p> int front; /*頭指針,若隊列不空,指向隊列頭元素
28、*/</p><p> int rear; /*尾指針,若隊列不空,指向隊列尾元素的下一個位置*/</p><p><b> }SqQueue;</b></p><p> typedef struct </p><p><b> {</b></p><p>
29、 int level;</p><p><b> int pos;</b></p><p> bool enter;</p><p> int spaceNum;</p><p> }DisplayInfo;</p><p> Status insert(BiTree bt,int k
30、ey)</p><p><b> {</b></p><p> BiTree p,q,newNode;</p><p> newNode=(BiTree)malloc(sizeof(BiNode));</p><p><b> p=NULL;</b></p><p>
31、<b> q=bt;</b></p><p><b> while(q)</b></p><p><b> {</b></p><p><b> p=q;</b></p><p> if(key<q->data)</p>
32、<p> q=q->lchild;</p><p><b> else </b></p><p> q=q->rchild;</p><p><b> }</b></p><p><b> if(p)</b></p><p&
33、gt;<b> {</b></p><p> if(key<p->data)</p><p> p->lchild=newNode;</p><p><b> else</b></p><p> p->rchild=newNode;</p><p
34、><b> }</b></p><p><b> else</b></p><p> bt=newNode;</p><p><b> }</b></p><p> Status InitQueue(SqQueue *Q)</p><p>
35、;<b> { </b></p><p> Q->base=(ElemType *)malloc(MAXQSIZE*sizeof(ElemType));</p><p> if (!Q->base)</p><p><b> {</b></p><p> printf(&quo
36、t;分配空間失敗!");</p><p> return OVERFLOW;</p><p><b> }</b></p><p> Q->front=0;</p><p> Q->rear=0;</p><p> return OK;</p><
37、;p><b> }</b></p><p> EnQueue(SqQueue *Q, ElemType e)</p><p><b> {</b></p><p> /* 插入元素e為新的隊尾元素 */</p><p> if ( (Q->rear+1)%MAXQSIZE==Q
38、->front )</p><p><b> {</b></p><p> printf("隊列滿了!");</p><p> return ERROR;</p><p><b> } </b></p><p> Q->base[
39、Q->rear]=e;</p><p> Q->rear=(Q->rear+1)%MAXQSIZE;</p><p><b> }</b></p><p> DeQueue(SqQueue *Q, ElemType *e)</p><p><b> {</b></p&
40、gt;<p> /* 刪除隊頭元素,并由e返回其值 */</p><p> if (Q->front==Q->rear) return ERROR;</p><p> *e=Q->base[Q->front];</p><p> Q->front=(Q->front+1)%MAXQSIZE;</p&g
41、t;<p><b> }</b></p><p> Status IsEmpty(SqQueue *Q)</p><p><b> {</b></p><p> if (Q->front==Q->rear) return OK;</p><p> else ret
42、urn ERROR;</p><p><b> } </b></p><p> BiTree CreateBiTree(BiTree bt)</p><p><b> {</b></p><p><b> char ch;</b></p><p>
43、; scanf("%c",&ch);</p><p> if(ch=='.') bt=NULL;</p><p><b> else </b></p><p><b> {</b></p><p> bt=(BiTree)malloc(sizeo
44、f(BiNode)); /* 生成根結點 */</p><p> bt->data=ch;</p><p> bt->lchild=CreateBiTree(bt->lchild); /* 生成左子樹 */</p><p> bt->rchild=CreateBiTree(bt->rchild); /* 生成右子樹 */</
45、p><p><b> }</b></p><p> return bt;</p><p><b> }</b></p><p><b> 程序功能說明:</b></p><p> 該段程序分別用三個結構體定義了二叉樹、隊列和樹的顯示信息,還包含&l
46、t;/p><p> 該程序需要用到C語言頭文件、數(shù)據(jù)定義和二叉樹的建立、隊列的插入與刪除等函數(shù),是整個程序的基礎。</p><p> 3.22 樹狀顯示二叉樹設計</p><p> 主要運用樹的廣度優(yōu)先搜索,樹的廣度優(yōu)先搜索功能如下:</p><p> 假設從圖中某頂點v出發(fā),在訪問了v的各個未曾訪問過的鄰接點,然后分別從這些鄰接點出發(fā)依
47、次訪問它們的鄰接點,并使“先被訪問的頂點的鄰接點”先于“后被訪問的頂點的鄰接點”被訪問,直至圖中所有已被訪問的頂點的鄰接點都被訪問到。若此時圖中尚有頂點未被訪問,則另選圖中一個未曾被訪問的頂點作起始點,重復上述過程,直至圖中所有頂點都被訪問到為止。廣度優(yōu)先搜索的過程如下:</p><p> 圖 3 廣度優(yōu)先搜索二叉樹</p><p>
48、 void BFSDisplayTree(BiTree bt)</p><p><b> {</b></p><p> SqQueue Q;</p><p> BiTree curNode;</p><p> printf("BFS Display Tree:\n");</p>
49、<p> EnQueue(&Q,curNode); </p><p> while(!IsEmpty(&Q))</p><p><b> {</b></p><p> DeQueue(&Q,&curNode);</p><p> *curNode=Q.front;<
50、;/p><p> if(curNode->lchild)</p><p> EnQueue(&Q, curNode->lchild);</p><p> if(curNode->rchild)</p><p> EnQueue(&Q, curNode->rchild);</p><
51、;p> printf("%d ",curNode->data);</p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p> void NatureDisp
52、layTree(BiTree bt)</p><p><b> {</b></p><p><b> int i;</b></p><p> SqQueue Q;</p><p> SqQueue QI;</p><p> int screenWidth=64;&l
53、t;/p><p> int dataWidth=2;</p><p> DisplayInfo info;</p><p> DisplayInfo preInfo;</p><p> BiTree curNode;</p><p> DisplayInfo curInfo;</p><p&g
54、t;<b> if(!bt)</b></p><p><b> {</b></p><p> printf("Tree is empty !\n");</p><p><b> return;</b></p><p><b> }<
55、/b></p><p> printf("Nature Display Tree:\n");</p><p> EnQueue(&Q, bt); /* 若二叉樹bt非空,則根結點bt入隊,開始層次遍歷 info.level=1;</p><p> info.enter=true;</p><p>
56、 info.spaceNum=screenWidth>>info.level;</p><p> info.pos=info.spaceNum;</p><p> EnQueue(&QI,info);</p><p> preInfo=info;</p><p> while(!IsEmpty(&Q))&
57、lt;/p><p><b> {</b></p><p> curNode=Q.front;</p><p> DeQueue(&Q,&e);</p><p> curNode=QI.front;</p><p> if(!curInfo.enter) </p>
58、<p> printf("\n\n");</p><p> for (i=0;i<curInfo.spaceNum;i++)</p><p> printf(" ");</p><p> printf("%2d",curNode->data);</p><
59、p> DeQueue(&QI,&curNode);</p><p> if(!curNode->lchild)</p><p><b> {</b></p><p> EnQueue(&Q, curNode->lchild);</p><p> Info.level=c
60、urInfo.level+1;</p><p> Info.pos=curInfo.pos-(screenWidth>>Info.level);</p><p> if(Info.level>preInfo.level)</p><p><b> {</b></p><p> Info.ente
61、r=true;</p><p> Info.spaceNum=Info.pos;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Info.enter=f
62、alse;</p><p> Info.spaceNum=Info.pos-preInfo.pos;</p><p><b> }</b></p><p> Info.spaceNum-=dataWidth;</p><p> EnQueue(&QI, Info);</p><p>
63、; preInfo=Info;</p><p><b> }</b></p><p> if(!curNode->rchild)</p><p><b> {</b></p><p> EnQueue(&Q, curNode->rchild);</p>&
64、lt;p> info.level=curInfo.level+1;</p><p> Info.pos=curInfo.pos+(screenWidth>>info.level);</p><p> if(info.level>preinfo.level)</p><p><b> {</b></p>
65、<p> info.enter=true;</p><p> info.spaceNum=info.pos;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>&
66、lt;p> info.enter=false;</p><p> info.spaceNum=info.pos-preInfo.pos;</p><p><b> }</b></p><p> info.spaceNum-=dataWidth;</p><p> EnQueue(&QI, info
67、);</p><p> preinfo=info;</p><p><b> }</b></p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p&
68、gt;<p> void Display(int *A,int n)</p><p><b> {</b></p><p><b> int i;</b></p><p> printf("Array Info:\n");</p><p> for (i=
69、0;i<n;i++)</p><p><b> {</b></p><p> printf("%d\t",A[i]);</p><p><b> }</b></p><p> printf("\n");</p><p>&
70、lt;b> }</b></p><p><b> 程序功能說明:</b></p><p> 程序先用廣度優(yōu)先搜索遍歷二叉樹(類似于二叉樹的按層次遍歷),使二叉樹的各結點依次進入隊列Q,然后定義了另一個隊列QI,它和隊列Q形成一一對應關系,其中存放Q中結點的打印信息,每次從Q中取出一個節(jié)點curNode, 對應的打印信息為curInfo,當結點的
71、輸出位置用層號level(需打印的空格數(shù))來界定,當level和….不同時,換行,通過Q與QI的結合,最后使二叉樹樹狀的顯示在屏幕上。</p><p> 3.22 主函數(shù)設計</p><p> 主函數(shù)是一個程序最重要的部分,本程序也不例外。</p><p> void main()</p><p><b> {</b&
72、gt;</p><p> BiTree bt,t;</p><p><b> int i;</b></p><p> int data[9]={5,4,2,7,1,9,3,0,6};</p><p> Display(data,9); //打印數(shù)組</p><p> for (i=0
73、;i<9;i++)</p><p> insert(bt,data[i]);</p><p> bt=CreateBiTree(bt); </p><p> BFSDisplayTree(bt); //廣度優(yōu)先打印二叉樹</p><p> NatureDisplayTree(bt); //自然顯示打印二叉樹&
74、lt;/p><p><b> }</b></p><p><b> 程序功能說明:</b></p><p> 該主函數(shù)首先定義了存儲二叉樹結點的數(shù)組,并將數(shù)組打印出來,然后定義了一個二叉樹對象myBST,調用函數(shù)insert(data[i])將數(shù)組中的樹依次插入到二叉樹中,最后用隊列Q和QI實現(xiàn)了二叉樹的廣度優(yōu)先搜索,把
75、二叉樹以樹狀的形式顯示到屏幕上。</p><p> 第四章 調試和操作說明</p><p><b> 4.1 調試</b></p><p> 1.在課程設計的過程中,寫代碼是一個方面,程序的調試才是最重要的,它是一個相當繁瑣的過程,有許多新的問題需要被解決;但是同時它也是一個比較重要的過程,因為在程序調試的過程中你可以學到很多新的知識,
76、從而增加你編程的經驗。</p><p> 在程序中有下面的代碼:if(np->key==1),剛開始做的時候,寫成了if (np->key = 1),錯誤不太容易發(fā)現(xiàn),主要是混淆了判斷語句與賦值語句的區(qū)別。查到一個小小的建議,變量和常量比較時,把常量放在 = = 號的左邊,這樣如果你錯寫為 = 時,編譯器就會報出禁止為常量賦值的錯。因此,好的編程習慣的很重要。</p><p>
77、; 2、程序編寫好后將程序在VC++環(huán)境中經過編譯確認無誤后調試并運行,得運行結果如下圖。</p><p><b> 圖4 運行結果1</b></p><p><b> 4.2 操作說明</b></p><p> 程序還提供二叉樹的結點個數(shù)及結點值的修改,若想修改結點的個數(shù)和結點的值,只需找到主函數(shù)(main()
78、)中的“int data[9]={5,4,2,7,1,9,3,0,6}”語句,把數(shù)組個數(shù)“9”改成結點的個數(shù),把數(shù)組元素改成需要的結點值即可。如把主函數(shù)中“int data[9]={5,4,2,7,1,9,3,0,6}”改成“int data[12]={6,8,4,3,1,7,9,5,2,10,12,15}”后的輸出結果如下:</p><p><b> 圖5 運行結果2</b></
79、p><p> 第五章 總結與體會</p><p> 5.1 本文的主要工作</p><p> 本設計的主要難點在于二叉樹的層次遍歷、隊列模型的建立及隊列與隊列之間建立聯(lián)系的設計與分析,以及程序的編譯與運行。</p><p><b> 5.2 存在問題</b></p><p> 雖然經過努力
80、,最終完成了樹狀顯示二叉樹的設計,但是我覺得在設計過程中還存在很多不足,例如:對一些C語言的編程思路不清楚,對實驗軟件運行步驟方法不熟悉,使得我在設計過程中遇到很多困難。</p><p><b> 5.3 心得體會</b></p><p> 緊張的兩周數(shù)據(jù)結構實訓很快過去了,通過這周的學習使我鞏固了以前的知識并在此基礎上對數(shù)據(jù)結構的特點和算法有了更深的了解, 數(shù)據(jù)
81、結構是計算機程序設計的重要理論技術基礎,它不僅是計算機科學的核心課程,而且已經成為其他理工專業(yè)的熱門選修課。從設計中我學到了很多東西,最重要的是去做好一件事的心態(tài),拿到題目的時候也許你覺得很難,但是只要你充滿信心,一步一個腳印去實現(xiàn)它,不要怕麻煩,功夫不怕有心人,相信你一定會成功的。所以說,坐而言不如立而言,對于這些編程設計還是應該自己動手實際操作才會有深刻理解。</p><p> 首先這兩周的學習,使我在鞏固
82、了原有的理論知識上,培養(yǎng)了我靈活運用和組合集成所學過知識及技能來分析、解決實際問題的能力,使我體會到自身知識和能力在實際中的應用和發(fā)揮。其次,激發(fā)了我創(chuàng)新意識,開發(fā)創(chuàng)造的能力和培養(yǎng)溝通能力。另外,讓我進一步熟悉了數(shù)據(jù)結構的設計應用。每一處編碼都是在反復的熟悉數(shù)據(jù)結構的結構特性,及其語法、函數(shù)和程序設計思想的過程,對我數(shù)據(jù)結構的學習和提高很有益處,并且使我明白了程序設計過程有如解決一實際問題,從解決實際問題的角度,我們可以這樣來看:第一要
83、了解這個問題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;第二,從問題的要害入手,從前到后的解決問題的每個方面,即從輸入開始入手,著重考慮如何從輸入導出輸出,在這個過程中,可確定所需的數(shù)據(jù)結構的基本類型——線性表、棧、隊列、串、數(shù)組、廣義表、樹和二叉樹以及圖等,然后確定處理過程——算法,可得最后結論。最后,在這次實訓過程中,我深刻的認識到了自己在學習方面的不足之處,我知道我還有太多的基本的思想沒有真正的理解,當然我不會灰心,我
84、會在以后的日子里努力彌補我的不足。</p><p> 總之,兩個禮拜的課程設計讓我受益匪淺。要學好一門學科,沒有刻苦鉆研的精神是不行的,只有在不斷的嘗試中,不斷經歷失敗,然后又不斷的嘗試才能獲得成功。兩個多禮拜中,我有過山窮水盡的困惑;有過柳暗花明的驚喜;有過唇槍舌劍的辯論;有過相互鼓勵的安慰。兩個禮拜的時間我經歷了很多,也收獲了很多。與其說它是體力與腦力的作業(yè),不如說它是合作精神和毅力的考驗。經過這次課程設計
85、,我不僅學到了很多知識和技能,更重要的是我們學會了如何運用所學知識去解決實際問題。</p><p><b> 致 謝</b></p><p> 在我們課程設計完善過程中,我也遇到了這樣或那樣的技術問題,但經過自己的不懈努力及查閱大量的資料,最終都得到了基本滿意的答案。同時,其他同學也給了我許多有益的啟示,促動和幫助,使我能夠順利的完成課題。</p>
86、<p> 感謝所有給予我?guī)椭睦蠋?,他們辛勤耕作,傳道授業(yè),不僅使我們開闊了視野,拓寬了思路,增長了學識,而且為我們今后的工作和學習打下了牢固的基礎,也使增強我們對計算機的興趣。是老師給予我無限的創(chuàng)造力和奮斗力,使我有無限的信心和希望來完成本次的實訓內容。</p><p> 同時也感謝學校給了我們這次難得的實訓機會,實訓的過程讓我們看到了自己理論知識上的不足,已掌握的知識也在這次的實訓中有了質的飛躍
87、,知識能夠應用了才是真正掌握了,也希望學校多給我們一些這樣的機會。</p><p> 在最后,再次感謝我們的老師,如果沒有老師的耐心指導,就不會有我們的成果。在我做論文期間,兩位老師淵博的學識、嚴謹求實的科學精神、一絲不茍的治學態(tài)度和高尚的品格,深深的感染了我。程序的每次改動都離不開老師的辛勤工作,從各個方面來說,審查的工作往往比編寫任務更復雜。正是老師百忙中不辭勞苦的幫助,才使我能夠順利完成這篇論文,在這里,
88、對您衷心的表示感謝。</p><p> 本次實訓中,老師對我的指導,我將永遠感激在心,我相信這是我人生中寶貴的財富。老師,謝謝您!祝老師在今后的工作中,一帆風順,事事順利。</p><p><b> 參考文獻</b></p><p> [1] 佟偉光,楊政 《實用數(shù)據(jù)結構》(第二版) 科學出版社</p><p>
89、 [2] 嚴蔚敏 《數(shù)據(jù)結構》(C語言版) 清華大學出版社</p><p> [3] 李保春編著,《數(shù)據(jù)結構習題與解析》,清華大學出版 2001年第一版</p><p> [4] 徐孝凱編著,《數(shù)據(jù)結構課程實驗》,清華大學出版 2002年第一版</p><p> [5] 張乃笑編著,《數(shù)據(jù)結構與算法》,電子工業(yè)出版社 2004年10月</p>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)據(jù)結構遍歷二叉樹》課程設計
- 數(shù)據(jù)結構課程設計---計算二叉樹高度
- 數(shù)據(jù)結構課程設計----二叉樹的應用
- 數(shù)據(jù)結構課程設計--二叉樹及應用
- 數(shù)據(jù)結構課程設計報告---線索二叉樹
- 數(shù)據(jù)結構課程設計--二叉樹的遍歷
- 數(shù)據(jù)結構課程設計---二叉樹的操作
- 《數(shù)據(jù)結構》課程設計--二叉排序樹調整為平衡二叉樹
- 數(shù)據(jù)結構課程設計--二叉樹的相關操作
- 數(shù)據(jù)結構課程設計報告--二叉樹的算法
- 數(shù)據(jù)結構課程設計----二叉樹平衡的判定
- 數(shù)據(jù)結構課程設計--按層次遍歷二叉樹
- 數(shù)據(jù)結構課程設計-二叉樹的基本操作
- 數(shù)據(jù)結構課程設計之二叉樹的遍歷
- 數(shù)據(jù)結構課程設計--二叉樹生成家譜
- 數(shù)據(jù)結構課程設計之-樹與二叉樹的轉換
- 數(shù)據(jù)結構課程設計---二叉樹的遍歷算法集成
- 數(shù)據(jù)結構課程設計---二叉排序樹和平衡二叉樹的判別
- 數(shù)據(jù)結構課程設計--樹的應用_樹和二叉樹的轉換
- 數(shù)據(jù)結構樹和二叉樹ppt
評論
0/150
提交評論