1. 程式人生 > >資料結構實驗七 圖(深度優先遍歷)

資料結構實驗七 圖(深度優先遍歷)

一、 實驗目的
1. 熟悉圖的鄰接矩陣和鄰接表的儲存結構
2. 熟悉圖的鄰接矩陣和鄰接表的建立演算法
3. 掌握圖的遍歷演算法
二、 實驗內容
1. 無向圖採用鄰接矩陣儲存,編寫深度優先搜尋遍歷演算法,從不同的頂點出發對無向圖進行遍歷。

//mgraph.h
//無向圖類
#include<iostream>
using namespace std;
const int size=10;

template<class T>
class mgraph         //建立mgraph類,無向圖
{
    private:
        T vertex[size];   //vertex:頂點
int visited[size]; int arc[size][size]; //arc:邊 int vernum,arcnum; //頂點數量和邊的數量 public: mgraph(T a[],int n,int e); //建構函式 ~mgraph(){} //解構函式 void DFS(int v); //深度優先遍歷 }; template<class T> mgraph<T>::mgraph(T a[],int n,int e) { int i,j; vernum=n; arcnum=e; for
(i=0;i<vernum;i++)//頂點 { vertex[i]=a[i]; visited[i]=0; } for(i=0;i<vernum;i++)//初始化邊 { for(j=0;j<vernum;j++) { arc[i][j]=0; } } for(int k=0;k<arcnum;k++)//有聯絡的邊為1 { cin>>i>>j; arc[i][j]=1; arc[j][i]=1
; } } template<class T> void mgraph<T>::DFS(int v)//深度優先遍歷 { cout<<vertex[v]; visited[v]=1; for(int j=0;j<vernum;j++) { if(arc[v][j]==1&&visited[j]==0) DFS(j); } cout<<endl; } #include<iostream> #include"mgraph.h" using namespace std; int main() { char a[]="ABCDEFGH"; mgraph<char> s(a,8,10); char b; cout<<"從哪一點開始?"<<endl; cin>>b; s.DFS(b-'A'); return 0; }