當前位置:編程學習大全網 - 源碼下載 - 數據結構C語言版本的廣度優先遍歷和深度優先遍歷將被緊急復制。

數據結構C語言版本的廣度優先遍歷和深度優先遍歷將被緊急復制。

#包含?& ltiostream & gt

#包含?& lt字符串& gt

#包含?& lt隊列& gt

使用?命名空間?std

int?FirstAdjVex(int?五);

int?NextAdjVex(int?v,?int?w);

作廢?DFS(int?五);?//從頂點v,?v是頂點數組的下標。

作廢?BFS(int?五);?//從頂點V開始對圖進行廣度優先遍歷,其中V是頂點數組的下標。

int?查找(字符串?a,int?n);

int?已訪問[10]= { 0 };

int?traver[10][10]= { 0 };

字符串?名稱[10];

int?主()

{

int?n,m,I,j,k;

字符串?甲、乙;

//freopen("Traver.txt "," r ",stdin);

CIN & gt;& gtn;

CIN & gt;& gtm;

for(I = 0;?我& ltn;?i++)

{

CIN & gt;& gta;

姓名[我]?=?a;

}

for(I = 0;?我& ltm;i++){

CIN & gt;& gta;

CIN & gt;& gtb;

j?=?找到(a,n);

k?=?find(b,n);

traver[j][k]?=?1;

traver[k][j]?=?1;

}

for(I = 0;?我& ltn;?i++){

如果(拜訪過[我]?==?0)

外勤支助部㈠;

}

cout & lt& lt”\ n”;

for(I = 0;?我& ltn;?i++){

拜訪過[我]?=?0;

}

for(I = 0;?我& ltn;?i++){

如果(拜訪過[我]?==?0)

BFS(壹);

}

cout & lt& lt”\ n”;

回歸?0;

}

//查找函數

int?查找(字符串?a,int?n){

int?我;

for(I = 0;?我& ltn;?i++){

如果(a?==?名字[我])

回歸?我;

}

回歸?-1;

}

int?FirstAdjVex(int?五)

{

int?我;

//從編號大的相鄰點開始訪問。

為了什麽?(我?=?9;?我?& gt=?0;?我-)

{

如果?(traver[v][i]?==?1)

回歸?我;

}

回歸?-1;

}

int?NextAdjVex(int?v,?int?w)

{

int?我;

為了什麽?(我?=?w?-?1;?我?& gt=?0;?我-)

{

如果?(traver[v][i]?==?1)

回歸?我;

}

回歸?-1;

}

作廢?DFS(int?五)

{

int?w;

//訪問頂點V(輸出頂點V的名稱)

cout & lt& ltname[v]& lt;& lt"?";

參觀過?=?1;

//找到頂點v的第壹個相鄰點W。

為了什麽?(w?=?FirstAdjVex(v);?w?& gt=?0;?w?=?NextAdjVex(v,w))

{

//如果沒有訪問過W,對頂點W進行深度優先搜索。

如果?(拜訪過[w]?==?0)

DFS(w);

}

}

作廢?BFS(int?五)?//從頂點V開始對圖進行廣度優先遍歷,其中V是頂點數組的下標。

{

int?w,?u;

隊列& ltint & gt?myqueue?//定義壹個隊列,元素是頂點的下標。

//把頂點v放到隊伍裏。

my queue . push(v);

cout & lt& ltname[v]& lt;& lt"?";

參觀過?=?1;

什麽時候?(!myqueue.empty())

{//當隊列不為空時進入循環。

//獲取隊列頭元素

u?=?my queue . front();

//團隊領導元素出列

my queue . pop();

//將u的所有相鄰點排隊。

w?=?FirstAdjVex(u);

什麽時候?(w?& gt=?0)

{

如果?(拜訪過[w]?==?0)

{

//訪問w

cout & lt& ltname[w]& lt;& lt"?";

拜訪過[w]?=?1;

//w加入團隊

my queue . push(w);

}

w?=?NextAdjVex(u,w);

}

}

}

  • 上一篇:java rmi獲取到的對象為什麽是單例的?
  • 下一篇:JSP和ASP各自的優勢!
  • copyright 2024編程學習大全網