BJFUOJ-276

本文介绍了一个使用C++实现的无向图结构MGraph,包含顶点表和邻接矩阵。函数CreateGraph用于构建图,包括输入顶点和边,而当需要增加新顶点时,展示了如何操作邻接矩阵。OutPutGraph函数则用于输出图的信息。
摘要由CSDN通过智能技术生成

基于邻接矩阵的新顶点的增加

#include <iostream>
#include <cstring>
using namespace std;
#define MaxNum 100 //最大顶点数


typedef struct {
    int vexs[MaxNum]; //顶点表
    int arcs[MaxNum][MaxNum];//邻接矩阵 边表
    int vexNum,arcNum; //当前顶点数,弧数
}MGraph;
/**
 * 构建无向图
 * @param n 顶点数
 * @param m 边数
 * @return
 */

//初始化图
void InitGraph(MGraph &G){
    G.vexNum = 0;
    G.arcNum = 0;
    memset(G.vexs,0,sizeof(G.vexs));
    memset(G.arcs,0,sizeof(G.arcs));
}

MGraph CreateGraph(int n,int m){
    MGraph G;
    InitGraph(G);

    //构造顶点
    for(int i = 1;i<=n;i++){
        G.vexs[i] = i;
        G.vexNum++;
    }

    //输入边
    int v1,v2;
    for(int i = 1;i<=m;i++){
        cin>>v1>>v2;
        G.arcs[v1][v2] = G.arcs[v2][v1] = 1;
    }

    //增加新顶点
    int new_vex;
    cin>>new_vex;
    G.vexs[++G.vexNum] = new_vex;

    return G;
}

void OutPutGraph(MGraph G){
    cout<<"0";
    for(int i = 1;i<=G.vexNum;i++) cout<<" "<<G.vexs[i];
    cout<<endl;
    for(int i = 1;i<=G.vexNum;i++){
        cout<<G.vexs[i];
        for(int j =1;j<=G.vexNum;j++){
            cout<<" "<<G.arcs[i][j];
        }
        cout<<endl;
    }
}

int main(){

    int n,m;
    cin>>n>>m;
    while(!(n==0 && m == 0)){

        MGraph G = CreateGraph(n,m);
        OutPutGraph(G);
        cin>>n>>m;
    }



    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值