鄰接矩陣深度與廣度優先遍歷演算法(c 實現)

2021-05-05 06:24:39 字數 1646 閱讀 4678

鄰接矩陣深度與廣度優先遍歷演算法(c++實現)

//標頭檔案 adjmwgraph.h

#ifndef adjmwgraph_h

#define adjmwgraph_h

class adjmwgraph

int numofvertices()

int numofedges()

vert getvalue(const int i);

int getweight(const int v1,const int v2);

void insertvertex(const vert & vertex);

void insertedge(const int v1,const int v2,int weight);

void deletevertex(const int i);

void deleteedge(const int v1,const int v2);

int getfirstneighbor(const int v);

int getnextneighbor(const int v1,const int v2);

void depthfirstsearch(const int v,int visited,void visit(vert item));

void broadfirstsearch(const int v,int visited,void visit(vert item));

void depthfirstsearch(void visit(vert item));

void broadfirstsearch(void visit(vert item));

};adjmwgraph::adjmwgraph(const int sz)

;void creatgraph(adjmwgraph & g,datatype v,int n,rowcolweight e,int e)

;seqlist::seqlist()

seqlist::~seqlist()

int seqlist::listsize() const

int seqlist::listempty() const

int seqlist::find(datatype & item) const

datatype seqlist::delete(const int pos)

~seqqueue()

void qinsert(const datatype & item);

datatype qdelete();

datatype qfront() const;

int queueempty() const

void clearqueue()

int getsize()const

};void seqqueue::qinsert(const datatype & item)

;rowcolweight rcw=,,,,,,,,,,,};

int n=7,e=12;

creatgraph(g,a,n,rcw,e);

cout<<"當前的頂點個數為:"int *visited=new int[g.numofvertices()];

for(int i=0;icout<<"廣度優先搜尋序列為:";

for(i=0;i

深度優先遍歷(鄰接矩陣)

problem description 無向連通圖的頂點值為字元型且互不相等,採用鄰接矩陣儲存。請從儲存下標為0的頂點開始深度優先遍歷,在選取下乙個未被訪問的鄰接點時,優先選擇儲存下標小的頂點,輸出該遍歷序列。input 有多組資料,每組第一行為兩個整數n和e,表示n個頂點和e條邊 0using n...

廣度優先搜尋 鄰接矩陣

需要了解的是,圖的廣度搜尋遍歷類似於二叉樹的層次遍歷,用到了隊的操作 如下 include include define ok 1 define error 0 define true 1 define false 0 define maxvex 100typedef int datatype 設定...

檢驗深度優先和廣度優先的程式 鄰接矩陣儲存結構

圖的遍歷 對圖的搜尋就是對圖中頂點的遍歷。圖中各頂點的關係比較複雜 乙個頂點可能有多 個鄰接頂點,也可能是獨立頂點 非連通圖 為了不重複地訪問所有頂點,需設立乙個訪 問標誌陣列visited,並置其初值為false 未被訪問 遍歷時只訪問那些未被訪問過的 頂點,且在訪問後,將其訪問標誌的值改為tru...