怎样在程序中表示一张图:
1.邻接矩阵表示法
2.邻接表表示法

图的建立(邻接矩阵表示):

#define MaxVertexNum 100
#define INFINITY 65535
typedef int Vertex;//用顶点的下标来表示顶点 
typedef int WeightType;//边的权值设为整型 
typedef char DataType;//顶点存储的数据类型为自符型 

//边的定义 
typedef struct ENode *PtrToENode;
struct ENode{
    Vertex V1,V2;//有向边<V1,V2> 
    WeightType Weight;//权重 
};
typedef PtrToENode Edge; 

//图结点的定义
typedef struct GNode *PtrToGNode;
struct GNode{
    int Nv;//顶点数
    int Ne;//边数
    WeightType G[MaxVertexNum][MaxVertexNum];
    DataType Data[MaxVertexNum]; 
}; 
typedef PtrToGNode MGraph;

MGraph CreateGraph(int VertexNum)
{
    //初始化一个有VertexNum个顶点但没有边的图
    Vertex V,W;
    MGraph Graph;

    Graph = (MGraph)malloc(sizeof(struct GNode));
    Graph->Nv = VertexNum;
    Graph->Ne = 0;
    //初始化邻接矩阵
    for(V=0;V<Graph->Nv;V++)
        fro(W=0;W<Graph->Nv;W++)
            Graph->G[V][W] = INFINITY;

    return Graph; 
}

void InsertEdge(MGraph Graph,Edge E)
{
    Graph->G[E->V1][E->V2] = E->Weight;
    Graph->G[E->V2][E->V1] = INFINITY;
}

MGraph BuildGraph()
{
    MGraph Graph;
    Edge E;
    Vertex V;
    int Nv,i;

    scanf("%d",&Nv);
    Graph = CreateGraph(Nv);

    scanf("%d",&(Graph->Ne));
    if(Graph->Ne != 0){
        E = (Edge)malloc(sizeof(struct ENode));
        for(i=0;i<Graph->Ne;i++){
            scanf("%d %d %d",&E->V1,&E->V2,&E->Weight);
            InsertEdge(Graph,E);
        }
    }
}

图的遍历:深度优先搜索(DFS)和广度优先搜索(BFS)

void DFS(Vertex V)
{
    visited[V] = true;
    for(V的每个邻接点W)
        if(!visited[W])
            DFS(W); 
}

void BFS(Vertex V)
{
    visited[V] = true;
    Enqueue(V,Q);
    while(!Isempty(Q)){
        V = Dequeue(Q);
        for(V的每个邻接点W)
            if(!visited[W]){
                visited[W] = true;
                Enqueue(W,Q);
            }
    }
}

图的简单表示
int G[MAXN][MAXN],Nv,Ne;
void BuildGraph()
{
    int i,j,v1,v2,w;

    scanf("%d",&Nv);
    for(i=0;i<Nv;i++)
        for(j=0;j<Nv;j++)
            G[i][j] = 0;
    scanf("%d",&Ne);
    for(i=0;i<Ne;i++)
    {
        scanf("%d %d %d",&v1,&v2,&w);
        //InsertEdge
        G[v1][v2] = w;
        G[v2][v1] = w;
    }
}



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/crate_M/article/details/49936311
个人分类: 数据结构
想对作者说点什么? 我来说一句

MH5.0MH5.0MH5.0MH5.0MH5.0

2010年05月12日 228KB 下载

网站图网站图网站图网站图

2010年03月04日 6KB 下载

erp系统er图,自己做的请指教

2009年03月25日 218KB 下载

可牛影像 专门做图工具

2009年02月09日 4.16MB 下载

设计图片非常好1111111

2011年04月20日 545KB 下载

画ER图工具

2011年09月21日 1.27MB 下载

没有更多推荐了,返回首页

不良信息举报

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭