图的简单深度遍历

#include “stdio.h”

#define MAX_VERTEX_NUM 100

typedef struct{

    int num;

    char data;

}VERTEX;

typedef struct{

    int n;

    int e;

    VERTEX vexs[MAX_VERTEX_NUM];

    int edges[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

}MGraph;

//建立邻接矩阵的图

MGraph *creat_MGraph(){

    int i,j,k,w,n,e;

    char c;

    MGraph mg1,*mg=&mg1;

    printf(“顶点数”);

    scanf(“%d”,&n);

    printf(“弧数:”);

    scanf(“%d”,&e);

    mg->n=n;

    mg->e=e;getchar();

    printf(“输入顶点信息:\n”);

    for (i=0;i<n;i++)

    {

        scanf(“%c”,&c);

        mg->vexs[i].data=c;

        mg->vexs[i].num=i;

    }

    for (i=0;i<n;i++)

    {

        for (j=0;j<n;j++)

        {

            mg->edges[i][j]=0;

        }

        

    }

    printf(“弧的信息:\n”);

    for (i=0;i<e;i++)

    {

        scanf(“%d%d%d”,&j,&k,&w);

        mg->edges[j][k]=w;

    }return(mg);

}

//深度优先搜索遍历

int visited[MAX_VERTEX_NUM];

void dfs_trave(MGraph *mg){

    int i;

    int flag=-1;//判断该图是否有回路;0表示没有,其它数字表示有。

    for (i=0;i<mg.n;i++)

    {

        visited[i]=0;

    }

    for (i=0;i<mg.n;i++)

    {

        if (visited[i]==0)

        {

            dfs(mg,i);

            flag++;

        }

    }

}

//深度搜索函数

void dfs(MGraph *mg,int i){

    int j;

    visited[i]=1;

    for (j=0;j<mg->n;j++)

    {

        if()

        {

            printf(“<%c,%c>”,mg->vexs[i],mg->vexs[j]);

        }

    }

}

int main(){

    printf(“hehe\n”);

}

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/u013995946/article/details/45365053
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞