数据结构(C语言版)严蔚敏---图的操作的相关代码

Posted il_持之以恒_li

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(C语言版)严蔚敏---图的操作的相关代码相关的知识,希望对你有一定的参考价值。

1. 将邻接表转换成邻接矩阵

main.cpp

void Convert(ALGraph G,MGraph &M)
    M.vexnum = G.vexnum;
    M.arcnum = G.arcnum;
    for(int i=1;i<=G.vexnum;i++)
        for(int j=1;j<=G.vexnum;j++)
            M.Edge[i][j] = 0;

    for(int i=1;i<=G.vexnum;i++)
        ArcNode *p = G.vertices[i].first->next;
        M.Vex[i] = G.vertices[i].data;
        while(p)
            M.Edge[i][p->adjvex] = 1;
            p = p->next;
        
    

// 图的邻接表转换成邻接矩阵

运行结果:

所表示的图为:

实现邻接表的参考代码在这篇博客:数据结构(C语言版)严蔚敏(线性表、队列、栈、串、树、图等数据结构参考代码,持续更新中。。。)

2. 将邻接矩阵转换成邻接表

main.cpp

void Convert2(MGraph M,ALGraph &G)
    G.arcnum = M.arcnum;
    G.vexnum = M.vexnum;
    for(int i=1;i<=M.vexnum;i++)
        G.vertices[i].data = M.Vex[i];
        G.vertices[i].first = (ArcNode*)malloc(sizeof(ArcNode));
        ArcNode *p = G.vertices[i].first,*q;
        p->next = NULL;
        for(int j=1;j<=M.vexnum;j++)
            if(M.Edge[i][j]!=0)
                q = (ArcNode*)malloc(sizeof(ArcNode));
                q->adjvex = j;
                q->next = p->next;
                p->next = q;
            
        
    

// 图的邻接矩阵转换成邻接表

运行结果:

所表示的图和1一样。

以上是关于数据结构(C语言版)严蔚敏---图的操作的相关代码的主要内容,如果未能解决你的问题,请参考以下文章

数据结构(C语言版)严蔚敏---二叉树遍历操作二叉树的相关代码

数据结构(C语言版)严蔚敏---二叉树遍历操作二叉树的相关代码

数据结构(C语言版)严蔚敏--->一些操作相关数据结构的题目

数据结构(C语言版)严蔚敏--->一些操作相关数据结构的题目

7-8-无向图的关节点-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版

数据结构(C语言版)严蔚敏(树的相关概念笔记)