您的位置:首页 > 产品设计 > UI/UE

N1:Stack Queue DFS BFS

2016-03-05 15:22 337 查看
#include <iostream>

#include <cstdio>

#include <queue>

using namespace std;

#define MAXVEX 100

#define INFINITY 65535

typedef char VertexType;

typedef int EdgeType;

typedef int Boolean;

Boolean visted[MAXVEX];

typedef struct

{

int numVertexes, numEdges;

VertexType vex[MAXVEX];

EdgeType arc[MAXVEX][MAXVEX];

}MGragh;

void CreatMGragh( MGragh *G )

{

int i, j, w, k;

scanf("%d%d", &G->numVertexes, &G->numEdges);

for( i=0; i<G->numVertexes; i++ )

scanf("%c", &G->vex[i]);

for( i=0; i<G->numVertexes; i++ )

for( j=0; j<G->numVertexes; j++ )

G->arc[i][j] = INFINITY;

for( k=0; k<G->numEdges; k++ )

{

scanf("%d%d%d", &i, &j, &w);

G->arc[i][j] = w;

G->arc[j][i] = G->arc[i][j];

}

}

void DFS(MGragh G, int i)

{

int j;

visted[i] = true;

printf("%c ", G.vex[i]);

for( j=0; j<G.numVertexes; j++ )

if( 1 == G.arc[i][j] && !visted[j] )

DFS(G, j);

}

void DFSTraveres(MGragh G)

{

int i;

for( i=0; i<G.numVertexes; i++ )

visted[i] = false;

for( i=0; i<G.numVertexes; i++ )

if( !visted[i] )

DFS(G, i);

}

void BFSTraveres(MGragh G)

{

int i, j;

queue<int> Q;

for( i=0; i<G.numVertexes; i++ )

visted[i] = false;

for( i=0; i<G.numVertexes; i++ )

{

if( !visted[i] )

{

visted[i] = true;

printf("%c ", G.vex[i]);

Q.push(i);

while( !Q.empty() )

{

i = Q.front();

Q.pop();

for( j=0; j<G.numVertexes; j++ )

if( 1 == G.arc[i][j] && !visted[j] )

{

visted[i] = true;

printf("%c ", G.vex[j]);

Q.push(j);

}

}

}

}

}

int main()

{

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: