그림 의 깊이 없 이 우선 옮 겨 다 니 기 (인접 행렬)
1691 단어 데이터 구조
#include
#include
#define INFINTY 65535 //
#define MAX 20 //
#define OK 1
#define ERROR 0
#define FALSE 0
#define TRUE 1
typedef int status;
typedef int EdgeType;//
typedef char VertexType;//
//typedef enum{DG,DN,UDG,UDN}GraphKind;// , , ,
typedef struct
{
VertexType vexs[MAX];//
EdgeType arcs[MAX][MAX]; //
int vexnum,arcnum; //
// GraphKind kind; //
}MGraph;
status LocateVex(MGraph *G,VertexType e)
{
int i;
for(i=0;ivexnum;++i)
{
if(e==G->vexs[i])
return i;
}
return -1;
}
status CreatUDG(MGraph *G)//
{
scanf("%d %d",&G->vexnum,&G->arcnum);getchar();
int i,j,k;
VertexType v1,v2;
i=0;
while(ivexnum)
{
scanf("%c",&G->vexs[i]);
i++;
}
getchar();
for(i=0;ivexnum;i++)//
for(j=0;jvexnum;j++)
G->arcs[i][j]=INFINTY;
for(k=0;karcnum;k++)
{
scanf("%c,%c",&v1,&v2);//
getchar();
i=LocateVex(G,v1);
j=LocateVex(G,v2);
G->arcs[j][i]=1;
G->arcs[i][j]=G->arcs[j][i];
}
return OK;
}
int visited[MAX];
void DFS(MGraph *G,int v)
{
int j;
visited[v]=TRUE;
printf("%c ",G->vexs[v]);
for(j=0;jvexnum;j++)
if(G->arcs[v][j]==1&&!visited[j])
DFS(G,j);
}
void DFSTraverse(MGraph *G)
{
int v;
for(v=0;vvexnum;++v)
visited[v]=FALSE;
for(v=0;vvexnum;++v)
if(!visited[v])
DFS(G,v);
}
void main()
{
MGraph *G=NULL;
G=(MGraph *)malloc(sizeof(MGraph));
CreatUDG(G);
DFSTraverse(G);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.