版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科生課程設(shè)計論文</b></p><p> 題 目:C++課程設(shè)計</p><p> -------圖的遍歷</p><p><b> 學(xué)生姓名: </b></p><p><b> 學(xué) 號: </b></p>
2、<p> 專 業(yè):計算機(jī)10級</p><p> 班 級:(4)班</p><p><b> 指導(dǎo)教師:</b></p><p> 2012年6月18日~2011年7月4日</p><p><b> 課程設(shè)計任務(wù)書</b></p><p>&l
3、t;b> 一、前言</b></p><p> 1.1課程設(shè)計的目的與意義………………………………………………4</p><p> 1.2對課程設(shè)計功能的需求分析…………………………………………4</p><p> 二、算法思想…………………………………………………………………5</p><p> 三、數(shù)據(jù)結(jié)構(gòu)………
4、…………………………………………………………5</p><p> 四、模塊劃分…………………………………………………………………6</p><p> node* creategraph()//建立鄰接表,完成無向圖的輸入</p><p> void DepthFirstSearch(node *list)//深度優(yōu)先搜索</p><p>
5、; void BreadthFirstSearth(node *list)//廣度優(yōu)先搜索</p><p> void PathSearth(node *list)//路徑搜索</p><p> void AdjacencyListDelete(node *list)//釋放鄰接表的空間</p><p> AdjacencyListDelete(list);
6、//釋放鄰接表空間</p><p><b> 五、系統(tǒng)的概要設(shè)計</b></p><p> 1、系統(tǒng)功能模塊圖…………………………………………………………9</p><p> 六、源程序……………………………………………………………………10</p><p> 七、程序的調(diào)試分析以及測試結(jié)果</p>
7、<p> 1、程序的調(diào)試測試結(jié)果…………………………………………………………20</p><p><b> 八、附錄</b></p><p><b> 1、附錄一</b></p><p> 心得……………………………………………………………………………21</p><p> 2
8、、參考文獻(xiàn)…………………………………………………………………22</p><p><b> 一、前言</b></p><p> 1.1課程設(shè)計的目的與意義</p><p> 上學(xué)期我們對《數(shù)據(jù)結(jié)構(gòu)》這門課程進(jìn)行了學(xué)習(xí)。這門課程是一門實(shí)踐性非常強(qiáng)的課程,為了讓大家更好地理解與運(yùn)用所學(xué)知識,提高動手能力,我們進(jìn)行了此次課程設(shè)計實(shí)習(xí)。這次課程設(shè)
9、計不但要求我們掌握《數(shù)據(jù)結(jié)構(gòu)》中的各方面知識,還要求我們具備一定的C++語言基礎(chǔ)和編程能力。</p><p> 通過實(shí)踐我們掌握《數(shù)據(jù)結(jié)構(gòu)》中的知識。對于《圖的遍歷》這一課題來說,所要求我們掌握的數(shù)據(jù)結(jié)構(gòu)知識主要有:圖的存儲結(jié)構(gòu)、隊列的基本運(yùn)算實(shí)現(xiàn)、圖的深度優(yōu)先遍歷算法實(shí)現(xiàn)、圖的廣度優(yōu)先遍歷算法實(shí)現(xiàn)。</p><p> 對于我們學(xué)生來講,此次課程設(shè)計是為了讓我們訓(xùn)練自己的實(shí)際設(shè)計能力,
10、通過設(shè)計實(shí)踐,去真正獲得此項目管理和團(tuán)隊協(xié)作等方面的基本訓(xùn)練和工作經(jīng)驗。</p><p> 通過課程設(shè)計的一系列訓(xùn)練,我們能提高如何綜合運(yùn)用所學(xué)知識解決實(shí)際問題的能力,以及獲得此項目管理和團(tuán)隊協(xié)作等等眾多方面的具體經(jīng)驗,增強(qiáng)對相關(guān)課程具體內(nèi)容的理解和掌握能力,培養(yǎng)對整體課程知識綜合運(yùn)用和融會貫通能力。</p><p> 1.2對課程設(shè)計功能的需求分析</p><p&
11、gt; 圖的遍歷并不需要是一個過于復(fù)雜的工作環(huán)境,一般來說:最合適的才是最好的。軟件設(shè)計必須符合我們使用實(shí)際情況的需要。根據(jù)要求,圖的遍歷主要功能如下: 1、用戶可以隨時建立一個有向圖或無向圖;</p><p> 2、用戶可以根據(jù)自己的需要,對圖進(jìn)行深度遍歷或廣度遍歷;</p><p> 3、用戶可以根據(jù)自己的需要對圖進(jìn)行修改;</p><p> 4
12、、在整個程序中,用戶可以不斷的按照不同的方式對圖進(jìn)行遍歷,若不繼續(xù),用戶也可以隨時跳出程序,同時,如果用戶輸入的序號錯誤,程序會提示用戶重新輸入序號;</p><p><b> 二、算法思想</b></p><p> 本課題本人所采用的是鄰接表的方式存儲圖,實(shí)現(xiàn)圖的深度、廣度兩種遍歷,并將每種遍歷結(jié)果輸出來。并且能尋找路徑。2.1.1圖的鄰接矩陣的建立
13、 對任意給定的圖(頂點(diǎn)數(shù)和邊數(shù)自定),,根據(jù)鄰接表的存儲結(jié)構(gòu)建立圖的鄰接表。2.1.2 圖的遍歷的實(shí)現(xiàn) 鄰接表是圖的一種鏈?zhǔn)酱鎯Y(jié)構(gòu),在鄰接表中,對圖中的每一個頂點(diǎn)建立一個單鏈表,通常以順序結(jié)構(gòu)存儲,以便隨機(jī)訪問任意一頂點(diǎn)。</p><p> 圖的深度遍歷,假設(shè)初始狀態(tài)是圖中所有頂點(diǎn)都未曾被訪問,則深度優(yōu)先遍歷可從圖中的某個頂點(diǎn)v出發(fā),訪問此頂點(diǎn),依次從v的未被訪問的鄰接點(diǎn)出發(fā)深度優(yōu)先遍歷圖,直至圖
14、中和v有路徑想通的頂點(diǎn)都被訪問到;若此時圖中尚有未被訪問的節(jié)點(diǎn),則另選圖中一個未被訪問的頂點(diǎn)做起始點(diǎn),直至所有節(jié)點(diǎn)都被訪問。</p><p> 圖的廣度優(yōu)先遍歷,是以v為起始點(diǎn),由近及遠(yuǎn),依次訪問和v有路徑相通且路徑長度為1、2、…的頂點(diǎn)。</p><p><b> 三、數(shù)據(jù)結(jié)構(gòu)</b></p><p> #define t true&l
15、t;/p><p> #define f false</p><p> #include<iostream.h></p><p> struct node//定義一個結(jié)構(gòu)作為節(jié)點(diǎn)類型</p><p><b> {</b></p><p><b> int data;<
16、;/b></p><p> bool sign;//標(biāo)志位,用來標(biāo)示是否遍歷過</p><p> node *next;</p><p><b> };</b></p><p><b> 四、模塊劃分</b></p><p> node* creategrap
17、h()//建立鄰接表,完成無向圖的輸入</p><p><b> };</b></p><p> 表4.1鄰接表的建立</p><p> void DepthFirstSearch(node *list)//深度優(yōu)先搜索</p><p><b> 真</b></p><p
18、> 非零 零</p><p> 圖4.2 深度優(yōu)先遍歷流程圖</p><p> void BreadthFirstSearth(node *list)//廣度優(yōu)先搜索</p><p> 真 </p><p> 表4.3圖的廣度遍歷</p><p>
19、void PathSearth(node *list)//路徑搜索</p><p> void AdjacencyListDelete(node *list)//釋放鄰接表的空間</p><p> AdjacencyListDelete(list);//釋放鄰接表空間</p><p><b> 五、系統(tǒng)的概要設(shè)計</b></p>
20、;<p> main() /*包含一些調(diào)用和控制語句*/</p><p> 圖5.1系統(tǒng)功能模塊圖</p><p><b> 六、部分源程序</b></p><p> #define t true</p><p> #define f false</p><p> #i
21、nclude<iostream.h></p><p> struct node//定義一個結(jié)構(gòu)作為節(jié)點(diǎn)類型</p><p><b> {</b></p><p><b> int data;</b></p><p> bool sign;//標(biāo)志位,用來標(biāo)示是否遍歷過</p
22、><p> node *next;</p><p><b> };</b></p><p> node* creategraph()//建立鄰接表,完成無向圖的輸入</p><p><b> {</b></p><p> int l,m,n;</p>&l
23、t;p><b> bool g;</b></p><p> cout<<"請輸入節(jié)點(diǎn)數(shù): ";</p><p><b> cin>>n;</b></p><p> node *adjacencylist=new node[n+1];//動態(tài)分配節(jié)點(diǎn)數(shù)組內(nèi)存</
24、p><p> adjacencylist[0].data=n;//0地址存放的為節(jié)點(diǎn)數(shù)</p><p> adjacencylist[0].next=NULL;</p><p> for(int i=1;i<=n;i++)//給各頂點(diǎn)域賦初值</p><p><b> {</b></p><
25、p> adjacencylist[i].data=0;</p><p> adjacencylist[i].next=NULL;</p><p> adjacencylist[i].sign=f;//表示未遍歷 </p><p><b> }</b></p><p> cout<<&quo
26、t;請依次輸入各條邊的始點(diǎn)和尾點(diǎn):(以0表示結(jié)束)"<<endl;</p><p><b> cin>>l;</b></p><p> if(l!=0)//判斷輸入邊是否結(jié)束</p><p><b> g=t;</b></p><p> while(g==t
27、)</p><p><b> {</b></p><p><b> cin>>m;</b></p><p> if((l>0)&&(l<=n)&&(m>0)&&(m<=n))//判斷輸入頂點(diǎn)是否正確</p><p&
28、gt;<b> {</b></p><p> node *p,*q,*top;</p><p> p=(node *)new(node);//分配邊的一個頂點(diǎn)內(nèi)存</p><p> p->data=m;</p><p> p->next=NULL;</p><p> if(
29、adjacencylist[l].next==NULL)//為每個節(jié)點(diǎn)創(chuàng)建鄰接鏈表</p><p> adjacencylist[l].next=p;</p><p><b> else</b></p><p><b> {</b></p><p> top=adjacencylist[l]
30、.next;</p><p> while(top->next!=NULL)</p><p> top=top->next;</p><p> top->next=p;</p><p><b> }</b></p><p> adjacencylist[l].data+
31、+;//統(tǒng)計鄰接點(diǎn)的個數(shù)</p><p> q=(node *)new(node);//分配邊的另一個頂點(diǎn)內(nèi)存</p><p> q->data=l;</p><p> q->next=NULL;</p><p> if(adjacencylist[m].next==NULL)//構(gòu)建鄰接表</p><
32、p> adjacencylist[m].next=q;</p><p><b> else</b></p><p><b> {</b></p><p> top=adjacencylist[m].next;</p><p> while(top->next!=NULL)<
33、;/p><p> top=top->next;</p><p> top->next=q;</p><p><b> }</b></p><p> adjacencylist[m].data++;//統(tǒng)計鄰接點(diǎn)的個數(shù)</p><p><b> }</b>&l
34、t;/p><p><b> else</b></p><p> cout<<"邊"<<l<<"--"<<m<<"輸入錯誤!"<<endl;//錯誤輸入標(biāo)識</p><p><b> cin>>
35、;l;</b></p><p> if(l==0)//邊的輸入結(jié)束</p><p><b> g=f;</b></p><p><b> }</b></p><p> return adjacencylist;//返回鄰接表</p><p><b&g
36、t; };</b></p><p> void DepthFirstSearch(node *list)//深度優(yōu)先搜索</p><p><b> {</b></p><p> int m,n=list[0].data,k,*a=new int[n];//設(shè)置一個數(shù)組用于存放節(jié)點(diǎn)</p><p>&l
37、t;b> node *p;</b></p><p> cout<<"采用深度優(yōu)先搜索:"<<endl;</p><p> cout<<"請輸入搜索起始節(jié)點(diǎn):";</p><p><b> cin>>k;</b></p>
38、<p> for(int i=0;i<n;i++)</p><p><b> {</b></p><p><b> a[i]=k;</b></p><p> list[k].sign=t;</p><p> if(i==n-1)</p><p>&
39、lt;b> break;</b></p><p><b> m=0;</b></p><p> while(list[k].sign==t)</p><p><b> {</b></p><p> p=list[k].next;</p><p>
40、 while(p!=NULL)//找出list[k]鏈表中的未遍歷節(jié)點(diǎn)</p><p><b> { </b></p><p> k=p->data;</p><p> p=p->next;</p><p> if(list[k].sign==f)</p><p><b&
41、gt; break;</b></p><p><b> }</b></p><p><b> m++;</b></p><p> if(list[k].sign!=f)//判斷是否是p=NULL跳出while循環(huán)的</p><p><b> {</b>&l
42、t;/p><p> if(i<m)//無節(jié)點(diǎn)可回溯</p><p><b> {</b></p><p> cout<<"該圖為非連通圖!"<<endl;</p><p> break; </p><p><b> }&l
43、t;/b></p><p><b> else</b></p><p> k=a[i-m]; //回溯 </p><p><b> }</b></p><p><b> }</b></p><p><b> } </b&g
44、t;</p><p> for(i=1;i<=n;i++)//恢復(fù)原鄰接表</p><p> list[i].sign=f;</p><p> cout<<"深度優(yōu)先搜索遍歷順序為:";</p><p> for(i=0;i<n;i++)//輸出遍歷結(jié)果</p><p&g
45、t; cout<<a[i]<<" ";</p><p> cout<<endl;</p><p> delete a;//釋放動態(tài)數(shù)組內(nèi)存</p><p><b> };</b></p><p> void BreadthFirstSearth(node
46、*list)//廣度優(yōu)先搜索</p><p><b> {</b></p><p> int m,r,k,n=list[0].data,*a=new int[n+1];//設(shè)置數(shù)組存放節(jié)點(diǎn)</p><p><b> node *p;</b></p><p> cout<<&quo
47、t;采用廣度優(yōu)先搜索:"<<endl;</p><p> cout<<"請輸入搜索起始節(jié)點(diǎn):";</p><p><b> cin>>k;</b></p><p><b> a[0]=n;</b></p><p><b&g
48、t; a[1]=k;</b></p><p> list[k].sign=t;//標(biāo)識遍歷的第一個節(jié)點(diǎn)</p><p><b> m=0;</b></p><p><b> r=1;</b></p><p> while(m!=r)</p><p>&l
49、t;b> {</b></p><p><b> m++;</b></p><p> p=list[a[m]].next;</p><p> while(p!=NULL)</p><p><b> {</b></p><p> k=p->da
50、ta;</p><p> if(list[k].sign==f)</p><p><b> {</b></p><p><b> r++;</b></p><p> a[r]=k;//遍歷到的節(jié)點(diǎn)存入數(shù)組</p><p> list[k].sign=t;//標(biāo)識已經(jīng)
51、遍歷過的節(jié)點(diǎn)</p><p><b> }</b></p><p> p=p->next; </p><p><b> }</b></p><p><b> }</b></p><p> for(int i=1;i<=n;i++)
52、//恢復(fù)原鄰接表</p><p> list[i].sign=f;</p><p> cout<<"廣度優(yōu)先搜索遍歷順序為: ";</p><p> for(i=1;i<=n;i++)//輸出遍歷</p><p> cout<<a[i]<<" ";<
53、;/p><p> cout<<endl;</p><p> delete a;//釋放動態(tài)數(shù)組內(nèi)存</p><p><b> };</b></p><p> void PathSearth(node *list)//路徑搜索</p><p><b> {</b&g
54、t;</p><p> int *a,c,d,m,k,n=list[0].data;</p><p> cout<<"請輸入起始點(diǎn):";</p><p><b> cin>>k;</b></p><p> cout<<"請輸入尾節(jié)點(diǎn):";
55、</p><p><b> cin>>c;</b></p><p> cout<<"請輸入要找的路徑長度:";</p><p><b> cin>>d;</b></p><p><b> d=d+1;</b><
56、;/p><p><b> if(d>n)</b></p><p> cout<<"不存在這樣的簡單路徑!"<<endl;</p><p><b> else</b></p><p><b> {</b></p>
57、<p> a=new int[d];//動態(tài)分配數(shù)組內(nèi)存存放路徑上的節(jié)點(diǎn)</p><p> for(int i=0;i<d;i++)</p><p><b> a[i]=0;</b></p><p><b> a[0]=k;</b></p><p><b> n
58、ode *p;</b></p><p><b> int x;</b></p><p> list[a[0]].sign=t;</p><p><b> i=1;</b></p><p> while(a[d-1]!=c)</p><p><b>
59、; { </b></p><p> while(i<d)</p><p><b> {</b></p><p><b> x=1;</b></p><p> p=list[a[i-1]].next;</p><p> while(p!=N
60、ULL)</p><p><b> {</b></p><p> m=p->data;</p><p> if(i==d-1&&m==a[0]&&a[0]==c)//路徑存在且為回路</p><p><b> {</b></p><p
61、> cout<<"該路徑為一條回路!"<<endl;</p><p><b> a[i]=m;</b></p><p><b> i++;</b></p><p><b> break;</b></p><p><
62、b> }</b></p><p> if(list[m].sign==f)</p><p><b> {</b></p><p> if(a[i]!=0)</p><p><b> { </b></p><p> if(x==0)//是否為
63、已經(jīng)判斷過的錯誤路徑</p><p><b> {</b></p><p><b> a[i]=m;</b></p><p> list[a[i]].sign=t;//標(biāo)識走過節(jié)點(diǎn)</p><p><b> i++;</b></p><p>&l
64、t;b> break;</b></p><p><b> }</b></p><p> if(a[i]==m)//設(shè)置錯誤路徑標(biāo)識</p><p><b> x=0;</b></p><p><b> }</b></p><p&g
65、t;<b> else</b></p><p><b> {</b></p><p><b> a[i]=m;</b></p><p> list[a[i]].sign=t;//標(biāo)識走過節(jié)點(diǎn)</p><p><b> i++;</b></p
66、><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> p=p->next; </p><p><b> }</b><
67、;/p><p> if(p==NULL)</p><p><b> {</b></p><p><b> a[i]=0;</b></p><p> i--;//由此節(jié)點(diǎn)往下的路徑不存在,回溯</p><p> list[a[i]].sign=f; //還原標(biāo)識符
68、 </p><p><b> }</b></p><p> if(i==0)//無法回溯,路徑不存在,跳出循環(huán)</p><p><b> {</b></p><p> cout<<"不存在這樣的簡單路徑!"<<endl;</p>
69、<p><b> break; </b></p><p><b> }</b></p><p><b> }</b></p><p> if(i==0)//無法回溯,路徑不存在,跳出循環(huán)</p><p><b> break;</b&
70、gt;</p><p> if(a[d-1]!=c)//路徑不是所要找的</p><p><b> { </b></p><p><b> i--; //回溯</b></p><p><b> if(i>=0)</b></p><p>
71、list[a[i]].sign=f;//還原標(biāo)識符</p><p><b> }</b></p><p><b> }</b></p><p> if(a[d-1]==c)//判斷路徑是否找到并輸出</p><p><b> {</b></p><p
72、> cout<<"從節(jié)點(diǎn)"<<k<<"到節(jié)點(diǎn)"<<c<<"的一條路徑為:";</p><p> for(i=0;i<d-1;i++)//輸出路徑</p><p> cout<<a[i]<<"--> ";&
73、lt;/p><p> cout<<a[d-1]<<endl;</p><p><b> }</b></p><p><b> delete a;</b></p><p><b> }</b></p><p> for(int
74、 i=1;i<=n;i++)//恢復(fù)原鄰接表</p><p> list[i].sign=f; </p><p><b> };</b></p><p> void AdjacencyListDelete(node *list)//釋放鄰接表的空間</p><p><b> {</
75、b></p><p> node *p,*q;</p><p> int n=list[0].data;</p><p> for(int i=1;i<=n;i++)</p><p><b> {</b></p><p> p=list[i].next;</p>
76、<p> while(p!=NULL)</p><p><b> {</b></p><p> q=p->next;</p><p> delete p;//釋放鏈表節(jié)點(diǎn)空間</p><p><b> p=q;</b></p><p><b&
77、gt; } </b></p><p><b> }</b></p><p> delete list;//釋放鄰接表空間</p><p><b> };</b></p><p> void main()</p><p><b> {</
78、b></p><p> node *list;</p><p> list=creategraph();//以鄰接表的形式建立一個無向圖</p><p><b> char a,b;</b></p><p> cout<<"請選擇遍歷方法:(d:深度優(yōu)先搜索;b:廣度優(yōu)先搜索)&quo
79、t;;</p><p> for(int i=1;i<2;i++)</p><p><b> {</b></p><p><b> cin>>a;</b></p><p><b> switch(a)</b></p><p>&
80、lt;b> {</b></p><p><b> case 'd':</b></p><p> case 'D': DepthFirstSearch(list);</p><p> cout<<"是否采用廣度優(yōu)先搜索重新遍歷?(y:是;n:否)";<
81、;/p><p><b> cin>>b;</b></p><p> if((b=='y')||(b=='Y'))</p><p> BreadthFirstSearth(list);</p><p><b> break;</b></p>
82、<p><b> case 'b':</b></p><p> case 'B': BreadthFirstSearth(list);</p><p> cout<<"是否采用深度優(yōu)先搜索重新遍歷?(y:是;n:否)";</p><p><b> c
83、in>>b;</b></p><p> if((b=='y')||(b=='Y'))</p><p> DepthFirstSearch(list);</p><p><b> break;</b></p><p> default: cout<&
84、lt;"輸入錯誤!請重新輸入!"<<endl;</p><p><b> i--;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> while(1)</b>
85、;</p><p><b> {</b></p><p> cout<<"是否搜索路徑?(y:是;n:否)";</p><p><b> cin>>a;</b></p><p> if((a=='y')||(a=='Y
86、9;))</p><p> PathSearth(list);</p><p> else if((a=='n')||(a=='N'))</p><p><b> break;</b></p><p><b> else</b></p><
87、p> cout<<"輸入錯誤!"<<endl;</p><p><b> }</b></p><p> AdjacencyListDelete(list);//釋放鄰接表空間</p><p><b> }</b></p><p> 七、程序
88、的調(diào)試分析以及測試結(jié)果</p><p> 7.1程序的調(diào)試分析</p><p> 程序的調(diào)試是一個很重要的方面,本題目有個創(chuàng)建鄰接表函數(shù)這是個基礎(chǔ),如果這里出了差錯當(dāng)然后面的模塊也就無法進(jìn)行了。所以在調(diào)試程序的時候,我是先進(jìn)行了對創(chuàng)建鄰接表的函數(shù)進(jìn)行調(diào)試。再確保無誤的情況下在進(jìn)行了后面模塊的調(diào)試,在調(diào)試中間經(jīng)常會出現(xiàn)一些小問題,這是我會經(jīng)常的采用“隔離”的方法進(jìn)行逐步的排查。最后還得對
89、整個程序進(jìn)行總體的調(diào)試,不斷完善一些細(xì)節(jié)方面,并對輸入的參數(shù)進(jìn)行多方面的改變,以確保程序的正確性。</p><p> 在整個程序運(yùn)行無誤的基礎(chǔ)上,在盡力對一些函數(shù)進(jìn)行優(yōu)化,加強(qiáng)程序的可讀性,方便性。</p><p> 經(jīng)過這次課程設(shè)計讓我收獲了不少東西,只要有以下幾個方面。</p><p> 1)對于基于C++語言的數(shù)據(jù)結(jié)構(gòu),C++語言的掌握情況是能否學(xué)好這么
90、課程的一個重要因素,所以在進(jìn)行課程設(shè)計的時候又對C++語言進(jìn)行了部分復(fù)習(xí)。</p><p> 2)在調(diào)試過程中懂得了,學(xué)習(xí)的嚴(yán)謹(jǐn)性,特別對于編程題目?!安钪晾?,謬之千里”。當(dāng)然這也不僅僅在學(xué)習(xí)方面,生活中也是樣。</p><p> 3)在這個項目中也提醒了自己在平時除了自己的專業(yè)知識外應(yīng)該積累更多的知識,技能。只有這樣在進(jìn)行各項事情的過程中才能更加順利。</p><
91、;p> 4)“理論聯(lián)系實(shí)踐”,實(shí)踐是建立在學(xué)習(xí)的基礎(chǔ)之上,而又在其中不斷的學(xué)習(xí)的過程。平時上課聽講覺得容易接受,淡然無味,但在實(shí)現(xiàn)算法的時候才發(fā)現(xiàn)原來一切并非如此。數(shù)據(jù)結(jié)構(gòu)這門課程比較抽象而且如果自己只是看看書的話根本就不能夠?qū)W好的,而且數(shù)據(jù)結(jié)構(gòu)這門課程也應(yīng)用的非常廣泛,特別是在計算機(jī)許多語言中都能夠看到數(shù)據(jù)結(jié)構(gòu)的思想。</p><p><b> 八、附錄</b></p>
92、;<p> 5.1、課程設(shè)計心得體會</p><p><b> 心得體會 </b></p><p> 通過這近一個星期的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計實(shí)踐,我學(xué)到了很多東西。本次課程設(shè)計對我來說正是一個提高自己能力的機(jī)會,我好好的抓住機(jī)會,努力做好每一步,完善每一步。</p><p> 自己的C語言知識和數(shù)據(jù)結(jié)構(gòu)知識得到了鞏固,
93、編程能力也有了一定的提高。同時也學(xué)會了解決問題的方法。總結(jié)起來,自己主要有以下幾點(diǎn)體會:</p><p> 1.必須牢固掌握基礎(chǔ)知識。由于C語言是大一所學(xué)知識,有所遺忘,且未掌握好上學(xué)期所學(xué)的《數(shù)據(jù)結(jié)構(gòu)》這門課,所以在實(shí)踐之初感到棘手。不知如何下手,但在后來的實(shí)習(xí)過程中自己通過看書和課外資料,并請教其他同學(xué),慢慢地對C語言和數(shù)據(jù)結(jié)構(gòu)知識有所熟悉,這時才逐漸有了思路。所以,這次課程之后,我告誡自己:今后一定要牢固
94、掌握好專業(yè)基礎(chǔ)知識。</p><p> 2.必須培養(yǎng)嚴(yán)謹(jǐn)?shù)膽B(tài)度。自己在編程時經(jīng)常因為一些類似于“少了分號”的小錯誤而導(dǎo)致錯誤,不夠認(rèn)真細(xì)致,這給自己帶來了許多麻煩。編程是一件十分嚴(yán)謹(jǐn)?shù)氖虑椋莶坏民R虎。所以在今后自己一定要培養(yǎng)嚴(yán)謹(jǐn)?shù)膽B(tài)度。我想這不僅是對于程序設(shè)計,做任何事都應(yīng)如此。</p><p> 3.這次課程設(shè)計也讓我充分認(rèn)識到《數(shù)據(jù)結(jié)構(gòu)》這門課的重要性。它給我們一個思想和大綱,讓
95、我們在編程時容易找到思路,不至于無章可循。同時它也有廣泛的實(shí)際應(yīng)用。</p><p> 在實(shí)踐過程中,我和組員分工合作,勇于提出問題,解決難題,在實(shí)踐中,我遇到了許多困難,但都一一克服了。最終我圓滿的完成此次課程設(shè)計,學(xué)到了很多東西。同時,程序還存在著一些缺陷,就是不能輸出原圖,存在一些局限性,不過我會繼續(xù)努力思考,完善程序,做到最好。</p><p> 此次試驗,老師對我的指導(dǎo)是至關(guān)
96、重要的,在此我非常感謝老師,從他那我學(xué)到了很多有關(guān)c語言的知識,為以后的學(xué)習(xí)打下了一定的基礎(chǔ)。</p><p> 總的來說,本次課程設(shè)計,不僅我的知識面有所提高,另外我的綜合素質(zhì)也有所提高,比如說:團(tuán)隊精神、提問能力、思考能力等等。這次課程設(shè)計為我以后更好的學(xué)習(xí)和使用c語言打下了基礎(chǔ)。</p><p><b> 參考文獻(xiàn)</b></p><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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計-圖的遍歷
- 圖的遍歷課程設(shè)計
- 圖的遍歷課程設(shè)計
- 圖的遍歷實(shí)現(xiàn)課程設(shè)計--圖的遍歷的實(shí)現(xiàn)
- 圖的廣度遍歷課程設(shè)計報告
- 圖遍歷的演示課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-----圖的遍歷
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---圖的遍歷
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告(圖的遍歷)
- 《圖的建立與遍歷》數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計---圖的存儲與遍歷
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-圖的遍歷和構(gòu)建
- 圖的廣度優(yōu)先遍歷-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-- 圖的遍歷和生成樹求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---圖的遍歷和生成樹求解
- 遍歷二叉樹課程設(shè)計
- 新數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---圖的遍歷和生成樹求解實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--二叉樹的遍歷
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-圖的遍歷和生成樹的求解實(shí)現(xiàn)說明書
- 《數(shù)據(jù)結(jié)構(gòu)遍歷二叉樹》課程設(shè)計
評論
0/150
提交評論