

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 計算機科學與技術系</b></p><p><b> 課程設計報告</b></p><p> 20 11~20 12 學年第 二 學期</p><p> 2011 年 6 月</p><p><b> 圖遍歷的演示</b><
2、/p><p> 一、問題分析和任務定義</p><p> 很多涉及圖上操作的算法都是以圖的遍歷操作為基礎的。試寫一個程序,演示在連通的無向圖上訪問全部結點的操作。將每個結點看做一個地名,如合肥。然后任選國內的城市,起點未合肥,忽略城市間的里程。</p><p> 設圖的結點20-30個,每個結點用一個編號表示(如果一個圖有n個結點,則它們的編號分別為1,2,…,n
3、)。通過輸入圖的全部邊(存于數據文件中,從文件讀寫)輸入一個圖,每個邊為一個數對,可以對邊的輸入順序作出某種限制。注意,生成樹的邊是有向邊,端點順序不能顛倒。</p><p> 二、數據結構的選擇和概要設計</p><p> 城市與城市之間的關系使沒有方向的,無向圖采用鄰近多重表來實現,主要要表示無向圖中的各個結點和邊,在多重表中邊是采用兩個結點來表示的。</p><
4、;p> 在鄰接表中Edgenode表示鄰接表中的結點類型,其中含有訪問標記mark,一條邊所依附的兩個結點的序號ivex和jvex,以及分別指向依附于ivex和jvex的頂點邊的鏈域ilink和jlink。</p><p> 其中,鄰接表中的表頭結點用Vexnode表示,包含了頂點信息data和指向第一個邊結點的firstedge。</p><p> 用AMLGraph表示整個
5、無向圖,包含了圖的頂點vexnum和邊數edgenum。</p><p><b> 結點坐標信息:</b></p><p> struct loc //結點坐標信息</p><p><b> {</b></p><p> int v; //結點序號</p><p>
6、 int x; //x坐標</p><p> int y; //y坐標</p><p><b> };</b></p><p><b> 邊結點數據結構:</b></p><p> struct Edgenode//邊結點 </p><p><b>
7、 { </b></p><p> int mark;//標志域,指示該邊是否被訪問過(0:沒有1:有) </p><p> int ivex,jvex;//該邊關聯的兩個頂點的位置 </p><p> Edgenode *ilink,*jlink;//分別指向關聯這兩個頂點的下一條邊 </p><p><b>
8、}; </b></p><p><b> 頂點結點:</b></p><p> struct Vexnode//頂點結點 </p><p><b> { </b></p><p> int data; //頂點名稱,用數字表示城市</p><p>
9、 Edgenode *firstedge;//指向第一條關聯該結點的邊 </p><p><b> }; </b></p><p> AMLGraph類:</p><p> 圖-1 AMLGraph類UML圖</p><p><b> 三、詳細設計和編碼</b></p><
10、;p> 程序主體部分主要包括兩大部分,一是遍歷算法部分;另一部分是對演示圖的處理。遍歷算法部分主要包括了,鄰接多重表構造的無向圖的初始化、深度遍歷和廣度遍歷;對演示圖的處理包括了,結點坐標信息的初始化和繪圖,運用了graphics.h庫中的繪圖函數。</p><p><b> 1、深度遍歷</b></p><p> 函數名稱: void DFS(int v
11、) </p><p> 函數功能:實現一張無向圖從一個指定結點的深度搜索遍歷,并輸出結點序號函數參數: int v 開始的結點</p><p><b> 具體代碼:</b></p><p> void DFS(int v)//深度優(yōu)先搜索遍歷(遞歸)</p><p><b> {</b>
12、</p><p> Edgenode *p;</p><p> visited[v]=1;//標志v已被訪問</p><p> cout<<v<<" ";</p><p><b> int i=v;</b></p><p> p=adjmul
13、ist[v].firstedge;//取v邊表的頭指針,使P指向firstedge</p><p> while(p!=NULL) //依次搜索v的鄰接點</p><p><b> {</b></p><p> if(p->ivex==i)</p><p><b> {</b><
14、;/p><p> if(visited[p->jvex]==0) //鄰近點未被訪問過</p><p><b> { </b></p><p> dline(l[v].x,l[v].y,l[p->jvex].x,l[p->jvex].y);</p><p> DFS(p->jvex)
15、; //遞歸調用</p><p><b> }</b></p><p> p=p->ilink;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b&g
16、t;</p><p> if(visited[p->ivex]==0)</p><p><b> {</b></p><p> dline(l[v].x,l[v].y,l[p->ivex].x,l[p->ivex].y);</p><p> DFS(p->ivex);//遞歸調用<
17、/p><p><b> }</b></p><p> p=p->jlink;</p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p>&
18、lt;p><b> 2、廣度遍歷</b></p><p> 函數名稱:void BFS(int v) </p><p> 函數功能:實現一張無向圖從一個指定結點的廣度度搜索遍歷,并輸出結點序號;</p><p> 函數參數: int v開始的結點,返回參數為void</p><p><b>
19、具體代碼:</b></p><p> void BFS(int v)//廣度優(yōu)先搜索遍歷</p><p><b> {</b></p><p><b> int i,vi;</b></p><p> int Queue[MAX_VERTEX_NUM],front=0,rear=0
20、; //建立隊列數組</p><p> Edgenode *p;</p><p> for(i=0;i<vexnum;i++)//全部節(jié)點標記為未訪問</p><p> visited[i]=0;</p><p> visited[v]=1; //開始結點標記為已訪問</p><p> cout&l
21、t;<v; //輸出當前訪問結點位置</p><p> cout<<"\n";</p><p> rear=(rear+1)%MAX_VERTEX_NUM; //取模初始化隊列</p><p> Queue[rear]=v;//入隊</p><p> while(front!=rear)/
22、/隊頭和隊尾計數器不相等,即當隊列非空</p><p><b> {</b></p><p> front=(front+1)%MAX_VERTEX_NUM;//出隊</p><p> vi=Queue[front];//vi即表頭數據元素值</p><p> p=adjmulist[vi].firstedge
23、;//p指向表頭節(jié)點所指的鄰接點</p><p> while(p!=NULL)//當表頭指針所指的鄰接點不為空</p><p><b> {</b></p><p> if(p->ivex==vi)</p><p><b> {</b></p><p> i
24、f(visited[p->jvex]==0)//邊節(jié)點內元素未被訪問則訪問節(jié)點內元素,并對其標記已訪問</p><p><b> {</b></p><p> visited[p->jvex]=1;</p><p> cout<<p->jvex<<" ";</
25、p><p> dline(l[vi].x,l[vi].y,l[p->jvex].x,l[p->jvex].y); //繪制路徑</p><p> rear=(rear+1)%MAX_VERTEX_NUM;//隊列的尾指針計數器加一,即后移一位</p><p> Queue[rear]=p->jvex;</p&
26、gt;<p><b> }</b></p><p> p=p->ilink;//邊節(jié)點內元素已被訪問,指向下一鄰接點</p><p><b> }</b></p><p><b> else</b></p><p><b> {</
27、b></p><p> if(visited[p->ivex]==0)</p><p><b> {</b></p><p> visited[p->ivex]=1;</p><p> cout<<p->ivex<<" ";</p>
28、<p> dline(l[vi].x,l[vi].y,l[p->ivex].x,l[p->ivex].y); //繪制路徑</p><p> rear=(rear+1)%MAX_VERTEX_NUM;</p><p> Queue[rear]=p->ivex;</p><p><b> }</b
29、></p><p> p=p->jlink;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&
30、gt;<p> 3、圖的創(chuàng)建和初始化</p><p> 函數名稱:void AML_Init()</p><p> 函數功能:創(chuàng)建一張固定結點和邊數的無向圖,邊與結點的關系是從文件中讀取</p><p> 函數參數:形參為空,返回也為void</p><p><b> 具體代碼:</b></
31、p><p> void AML_Init() </p><p><b> { </b></p><p> ifstream icin;</p><p> icin.open("d:\wenjian2.txt"); </p><p> int i,j,k;</p>
32、;<p> int edge[30][2];//二維數組來存儲邊的關系,30條邊和ivex,jvex邊集的兩結點</p><p> for(i=0;i<edgenum;i++)</p><p> for(j=0;j<2;j++)</p><p> icin>>edge[i][j];</p><
33、p> for(i=0;i<vexnum;i++) //初始化頂點</p><p><b> { </b></p><p> adjmulist[i].data=i+1; </p><p> adjmulist[i].firstedge=NULL; </p><p><b> } <
34、/b></p><p> for(k=0;k<edgenum;k++)//初始化邊信息</p><p><b> { </b></p><p> Edgenode *e=new Edgenode; //申請邊結點空間</p><p> e->ivex=edge[k][0];</p>
35、;<p> e->jvex=edge[k][1];//讀入2個頂點的值</p><p> e->ilink=adjmulist[e->ivex].firstedge;//將頭結點的firstedge指針賦給新結點的ilink</p><p> adjmulist[e->ivex].firstedge=e;//將頭結點的指針指向新結點<
36、;/p><p> e->jlink=adjmulist[e->jvex].firstedge;//將新結點的jlink指針指向其jvex結點所依附的結點</p><p> adjmulist[e->jvex].firstedge=e;</p><p><b> } </b></p><p>
37、 init_location(); //初始化所有結點的坐標信息</p><p><b> } </b></p><p><b> 4、初始化頂點坐標</b></p><p> 函數名稱:void init_location()</p><p> 函數功能:此函數為初始化頂點坐標,主要用來
38、讀取存儲在文件中的各個頂點坐標信息</p><p> 函數參數:形參為空,返回值為空</p><p><b> 具體代碼:</b></p><p> void init_location() //初始化結點的坐標信息</p><p><b> {</b></p><p&
39、gt; ifstream icin;</p><p> l=new loc[20];</p><p> icin.open("d:\wenjian1.txt");</p><p> for(int i=1;i<=26;i++)</p><p> icin>>l[i].v>>l[i]
40、.x>>l[i].y;</p><p><b> }</b></p><p><b> 上機調試過程</b></p><p> 圖-2 具體的圖關系圖 圖-3 存儲頂點坐標信息文件</p><p><b> 測試結果及其分析</b&g
41、t;</p><p> 圖-4 深度搜索遍歷結果</p><p> 圖-5深度搜索遍歷演示</p><p> 圖-6 廣度搜索遍歷演示</p><p> 圖-7 廣度度搜索遍歷演示</p><p><b> 六、用戶使用說明</b></p><p> 本程序采用
42、C++語言在Windows 7+VC6.0環(huán)境下編寫,主要功能是演示圖的兩種遍歷過程;</p><p> 程序所默認演示無向圖包括26個結點和30條邊,其中26個結點數字分別代表26個省會城市,30條邊表示他們之間的關系,具體關系如演示圖所示;</p><p> 進入軟件界面后,首先需要輸入開始進行遍歷的城市位置(即對應的結點數字),然后再進行選擇進行圖遍歷的方式,本程序提供2種圖遍歷
43、方式,深度優(yōu)先遍歷和廣度優(yōu)先遍歷,選擇遍歷方式后,遍歷結果將之間顯示在屏幕上,左邊數字為訪問的結點,右邊邊集是訪問時所經過的邊。</p><p> 在運行程序之前,請確保系統裝有Easyx的graphicsk庫。</p><p><b> 七、參考文獻</b></p><p> [1] 王昆侖,李紅. 數據結構與算法. 北京:中國鐵道出版
44、社,2006年5月。</p><p> [2] 編程中國:http://bbs.bccn.net/thread-329777-1-1.html</p><p> [3] Easyx:http://www.easyx.cn</p><p><b> 附錄</b></p><p><b> 詳細代碼:&
45、lt;/b></p><p><b> graph.h</b></p><p> #include <graphics.h> </p><p> #include <conio.h></p><p> #include <iostream> </p>
46、<p> #include <fstream> </p><p> //#include "image.h"</p><p> using namespace std; </p><p> #define MAX_VERTEX_NUM 30//頂點最大個數</p><p> bool v
47、isited[100]; //頂點是否被訪問標志 </p><p> struct loc //結點坐標信息</p><p><b> {</b></p><p> int v; //結點序號</p><p> int x; //x坐標</p><p> int y; //y坐標<
48、;/p><p><b> };</b></p><p> //鄰接多重表的存儲 </p><p> struct Edgenode//邊結點 </p><p><b> { </b></p><p> int mark;//標志域,指示該邊是否被訪問過(0:沒有1:
49、有) </p><p> int ivex,jvex;//該邊關聯的兩個頂點的位置 </p><p> Edgenode *ilink,*jlink;//分別指向關聯這兩個頂點的下一條邊 </p><p><b> }; </b></p><p> struct Vexnode//頂點結點 </p>
50、;<p><b> { </b></p><p> int data; //頂點名稱,用數字表示城市</p><p> Edgenode *firstedge;//指向第一條關聯該結點的邊 </p><p><b> }; </b></p><p> class AMLGr
51、aph </p><p><b> { </b></p><p><b> private: </b></p><p> loc *l; //坐標信息指針</p><p> Vexnode *adjmulist; //頂點數組指針 </p><p> int vex
52、num; //定點數目 </p><p> int edgenum; //邊數目 </p><p> int maxnum; //頂點數最大值 </p><p><b> public: </b></p><p><b> //構造函數</b></p><p> A
53、MLGraph(int num1=26,int num2=30)</p><p><b> { </b></p><p> adjmulist=new Vexnode[num1]; </p><p> vexnum=num1;edgenum=num2;</p><p> maxnum=MAX_VERTEX_NUM
54、;</p><p><b> } </b></p><p><b> //析構函數</b></p><p> ~AMLGraph()</p><p><b> { </b></p><p> delete[]adjmulist; </
55、p><p><b> } </b></p><p> //定位頂點在頂點數組中的位置 </p><p> int Locate_Vex(int v) </p><p><b> { </b></p><p> for(int i=0;i<vexnum;i++)&l
56、t;/p><p> if((adjmulist[i].data)==v) </p><p> return i; </p><p> return -1; </p><p><b> } </b></p><p><b> //構造無向圖</b></p>
57、<p> void AML_Init() </p><p><b> { </b></p><p> ifstream icin;</p><p> icin.open("d:\wenjian2.txt"); </p><p> int i,j,k;</p><
58、p> int edge[30][2];//二維數組來存儲邊的關系,30條邊和ivex,jvex邊集的兩結點</p><p> for(i=0;i<edgenum;i++)</p><p> for(j=0;j<2;j++)</p><p> icin>>edge[i][j];</p><p> for
59、(i=0;i<vexnum;i++) //初始化頂點</p><p><b> { </b></p><p> adjmulist[i].data=i+1; </p><p> adjmulist[i].firstedge=NULL; </p><p><b> } </b><
60、/p><p> for(k=0;k<edgenum;k++)//初始化邊信息</p><p><b> { </b></p><p> Edgenode *e=new Edgenode; //申請邊結點空間</p><p> e->ivex=edge[k][0];</p><p&g
61、t; e->jvex=edge[k][1];//讀入2個頂點的值</p><p> e->ilink=adjmulist[e->ivex].firstedge;//將頭結點的firstedge指針賦給新結點的ilink</p><p> adjmulist[e->ivex].firstedge=e;//將頭結點的指針指向新結點</p><p
62、> e->jlink=adjmulist[e->jvex].firstedge;//將新結點的jlink指針指向其jvex結點所依附的結點</p><p> adjmulist[e->jvex].firstedge=e;</p><p><b> } </b></p><p> init_location();
63、 //初始化所有結點的坐標信息</p><p><b> } </b></p><p><b> //深度優(yōu)先遍歷 </b></p><p> void DFS_Traverse() </p><p><b> { </b></p><p>
64、for(int i=0;i<vexnum;i++) </p><p> visited[i]=false;//初始化所有頂點未被訪問過</p><p> for(i=0;i<vexnum;i++) </p><p> if(!visited[i])//如果未被訪問過,進行訪問DFS遍歷</p><p><b&g
65、t; DFS(i); </b></p><p> cout<<endl; </p><p><b> } </b></p><p> void DFS(int v)//深度優(yōu)先搜索遍歷(遞歸)</p><p><b> {</b></p><
66、p> Edgenode *p;</p><p> visited[v]=1;//標志v已被訪問</p><p> cout<<v<<" ";</p><p><b> int i=v;</b></p><p> p=adjmulist[v].firstedge
67、;//取v邊表的頭指針,使P指向firstedge</p><p> while(p!=NULL) //依次搜索v的鄰接點</p><p><b> {</b></p><p> if(p->ivex==i)</p><p><b> {</b></p><p&g
68、t; if(visited[p->jvex]==0) //鄰近點未被訪問過</p><p><b> { </b></p><p> dline(l[v].x,l[v].y,l[p->jvex].x,l[p->jvex].y);</p><p> DFS(p->jvex); //遞歸調用</p
69、><p><b> }</b></p><p> p=p->ilink;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>&l
70、t;p> if(visited[p->ivex]==0)</p><p><b> {</b></p><p> dline(l[v].x,l[v].y,l[p->ivex].x,l[p->ivex].y);</p><p> DFS(p->ivex);//遞歸調用</p><p>
71、;<b> }</b></p><p> p=p->jlink;</p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b>
72、; //廣度優(yōu)先遍歷 </b></p><p> void BFS_Traverse() </p><p><b> { </b></p><p> for(int i=0;i<vexnum;i++) </p><p> visited[i]=false; </p><p&
73、gt; for(i=0;i<vexnum;i++) </p><p> if(!visited[i]) </p><p><b> BFS(i); </b></p><p> cout<<endl; </p><p><b> } </b></p><
74、p> void BFS(int v)//廣度優(yōu)先搜索遍歷</p><p><b> {</b></p><p><b> int i,vi;</b></p><p> int Queue[MAX_VERTEX_NUM],front=0,rear=0; //建立隊列數組</p><p>
75、 Edgenode *p;</p><p> for(i=0;i<vexnum;i++)//全部節(jié)點標記為未訪問</p><p> visited[i]=0;</p><p> visited[v]=1; //開始結點標記為已訪問</p><p> cout<<v; //輸出當前訪問結點位置</p&g
76、t;<p> cout<<"\n";</p><p> rear=(rear+1)%MAX_VERTEX_NUM; //取模初始化隊列</p><p> Queue[rear]=v;//入隊</p><p> while(front!=rear)//隊頭和隊尾計數器不相等,即當隊列非空</p>
77、<p><b> {</b></p><p> front=(front+1)%MAX_VERTEX_NUM;//出隊</p><p> vi=Queue[front];//vi即表頭數據元素值</p><p> p=adjmulist[vi].firstedge;//p指向表頭節(jié)點所指的鄰接點</p><
78、;p> while(p!=NULL)//當表頭指針所指的鄰接點不為空</p><p><b> {</b></p><p> if(p->ivex==vi)</p><p><b> {</b></p><p> if(visited[p->jvex]==0){
79、</p><p> visited[p->jvex]=1;</p><p> cout<<p->jvex<<" ";</p><p> dline(l[vi].x,l[vi].y,l[p->jvex].x,l[p->jvex].y); rear=(rear+1)%MAX_VER
80、TEX_NUM; Queue[rear]=p->jvex;</p><p><b> }</b></p><p> p=p->ilink;//邊節(jié)點內元素已被訪問,指向下一鄰接點</p><p><b> }</b></p><p><b> e
81、lse</b></p><p><b> {</b></p><p> if(visited[p->ivex]==0)</p><p><b> {</b></p><p> visited[p->ivex]=1;</p><p> cout
82、<<p->ivex<<" ";</p><p> dline(l[vi].x,l[vi].y,l[p->ivex].x,l[p->ivex].y); rear=(rear+1)%MAX_VERTEX_NUM;</p><p> Queue[rear]=p->ivex;</p><
83、;p><b> }</b></p><p> p=p->jlink;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b
84、> }</b></p><p> void dline(int x1,int y1,int x2,int y2) //畫線</p><p><b> {</b></p><p> setlinestyle(PS_DASH, NULL, 3); //設置線形為寬度 3 像素的虛線</p><p&g
85、t; line(x1,y1,x2,y2);</p><p><b> }</b></p><p> void init_location() //初始化結點的坐標信息</p><p><b> {</b></p><p> ifstream icin;</p><p&
86、gt; l=new loc[20];</p><p> icin.open("d:\wenjian1.txt");</p><p> for(int i=1;i<=26;i++)</p><p> icin>>l[i].v>>l[i].x>>l[i].y;</p><p>
87、;<b> }</b></p><p> void image()//繪制矢量無向圖</p><p><b> {</b></p><p> HWND hWnd = GetHWnd();</p><p> // 使用 API 函數修改窗口名稱</p><p>
88、SetWindowText(hWnd, "圖的遍歷演示");</p><p> HWND initgraph(</p><p> int Width,</p><p> int Height,</p><p> int Flag =SHOWCONSOLE </p><p><b>
89、; );</b></p><p> initgraph(800, 600); </p><p> loadimage(NULL, "D:\\map1.bmp");</p><p><b> }</b></p><p><b> }; </b></p
90、><p><b> Main.h</b></p><p> #include "graph.h" </p><p> #include <iostream> </p><p> #include <cstdlib></p><p> using n
91、amespace std; </p><p> void main() </p><p><b> { </b></p><p> system("color f0");</p><p> AMLGraph G; </p><p> G.AML_Init(); <
92、;/p><p><b> int v,op;</b></p><p> char op1;</p><p> cout<<"\t\t\t圖的DFS和BFS的演示V1.0\n";</p><p> cout<<"\t\t\t正在從文件中讀取。。。\n";
93、</p><p> cout<<"\t\t\t從文件中讀取信息完畢\n";</p><p> //cout<<"鄰接多重表結構:"<<endl; </p><p> cout<<"\n1:長春2:哈爾濱3:呼和浩特4:北京5:沈陽6:寧夏7:太原8:石家莊9:天津
94、10:濟南\n11:西安12:鄭州13:南京14:上海15:合肥16:成都17:重慶18:武漢19:杭州20:貴州\n21:長沙22:南昌23:福州24:昆明25:南寧26:廣州";</p><p> while(1){ </p><p> cout<<"\n\t\t\t請輸入起始位置(用地名前的數字表示):\n";</p>&
95、lt;p><b> cin>>v;</b></p><p> cout<<"\t\t1.DFS"<<endl;</p><p> cout<<"\t\t2.BFS"<<endl;</p><p> cout<<"
96、;\t\t請選擇遍歷方式:";</p><p><b> cin>>op;</b></p><p> switch(op)</p><p><b> {</b></p><p> case 1:cout<<"DFS如下:\n";G.ima
97、ge();G.DFS(v);break;</p><p> case 2:cout<<"BFS如下:\n";G.image();G.BFS(v);;break;</p><p><b> }</b></p><p> cout<<"\n\t\t\t是否繼續(xù)?(Y/N)";&l
98、t;/p><p><b> cin>>op1;</b></p><p> if(op1=='N'||op1=='n')</p><p><b> {</b></p><p> cout<<"\t\t\t感謝使用!";b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖的廣度遍歷課程設計報告
- 課程設計-圖的遍歷
- 圖的遍歷課程設計
- 圖的遍歷課程設計
- 數據結構課程設計報告(圖的遍歷)
- 圖的遍歷實現課程設計--圖的遍歷的實現
- 課程設計論文-圖的遍歷
- 數據結構課程設計-----圖的遍歷
- 數據結構課程設計---圖的遍歷
- 《圖的建立與遍歷》數據結構課程設計
- 數據庫課程設計---圖的存儲與遍歷
- 數據結構課程設計-圖的遍歷和構建
- 圖的廣度優(yōu)先遍歷-數據結構課程設計
- 數據結構課程設計---二叉樹的建立和遍歷的演示
- 數據結構課程設計---二叉樹和中序遍歷的演示
- 數據結構課程設計-- 圖的遍歷和生成樹求解
- 數據結構課程設計---圖的遍歷和生成樹求解
- 遍歷二叉樹課程設計
- 算術表達式求值演示-課程設計報告
- mfc課程設計報告—漢諾塔演示系統
評論
0/150
提交評論